OC学习_2_关于类的定义
来源:互联网 发布:网络炒作公司 编辑:程序博客网 时间:2024/04/26 17:18
=====文档变更状态====
2015-12-14:发布
=================
day02-[2015-12-11]
一、类的简单定义
1.直接使用@implementation指令
2.将成员变量定义在一对{}中
3.在{}后定义方法/行为
4.最后加上@end指令
5.类名使用PASCAL命名规范,一般在类名前加前缀
6.创建对象:
类名* 指针名=[类名 new];
7.访问成员变量:
指针名->成员变量名
8.访问方法:
[指针名 方法名];
// 定义一个简单类
#import <Foundation/Foundation.h>@implementation Person : NSObject // 定义一个简单类用@implementatopn的方式{@public // 不写默认是私有的下面的main函数不能用箭头访问此处的三个变量 NSString* name; int age; char gender;}-(void)say{ NSLog(@"I am %@,age is %d,gender is %c.",name,age,gender);}-(void)eat:(NSString*)food{}-(int)doWork{ return 0;}@endint main1() { Person* tang=[Person new]; // 具体化、实例化对象用new的方式 tang->age=50; // 给成员变量age赋值,”结构体”用箭头访问 tang->name=@"Sanzang"; // 给成员变量name赋值 tang->gender='M'; // 给成员变量gender赋值 [tang say]; //方法调用 return 0;}
二、类的规范语法
1.分成声明和实现二部分
2.声明(也称为:接口):使用@interface
成员变量(属性)的定义、方法的声明(没有方法体),以头文件.h形式给出
3.实现:使用@implementation
方法的实现,以.m文件给出
4.可以使用Xcode的模板创建
5.创建对象的另一种方式:
类名* 指针名=[[类名 alloc]init];
三、方法
1.定义在类中的是方法method,类外的是函数function
2.方法分为对象方法(-)和类方法(+);对象方法必须由对象实例来调用,类方法必须由类名来调用;对象方法可以访问成员变量,而类方法不可以
3.方法参数:使用“:”与方法名分割,多个参数使用空格分隔,且每个参数都应有一个“:”,最好给每个参数一个形参标签
4.只在接口中声明,没有实现的可以调用并通过编译,但运行会出错;没有声明只有实现的方法(暂时)无法调用,可以当做私有方法
5.同一类中不允许出现同名的类方法或同名的对象方法,方法名包括“:”和形参标签;可以有与对象方法同名的类方法
备注:下面两段代码比较简单,不在写注释和注意点
// YYPerson—规范定义一个类-1
// YYPerson.h@interface YYPerson : NSObject{@public NSString* name; int age; char gender;}-(void)say;-(void)eat:(NSString*)food;-(int)doWork;+(void)test;-(void)doSomething:(NSString*)job withTool:(NSString*)tool;-(void)method1:(int)a :(int)b :(int)c;-(void) method2:(int)n other:(int)m;-(void)test;@end// YYPerson.m#import "YYPerson.h"@implementation YYPerson-(void)say{ NSLog(@"I am %@,age is %d,gender is %c.",name,age,gender);}-(void)eat:(NSString *)food{}-(int)doWork{ return 0;}+(void)test{// NSLog(@"this is test method%@.",name);}-(void)doSomething:(NSString *)job withTool:(NSString *)tool{ NSLog(@"%@ is doing %@ using %@",name,job,tool);}-(void)method1:(int)a :(int)b :(int)c{ NSLog(@"a=%d,b=%d,c=%d",a,b,c);}-(void)ttt{ NSLog(@"ttt method");}@end// test1.m#import "YYPerson.h"int main2(){ YYPerson* person=[[YYPerson alloc]init];//new// NSLog(@"age:%d",person->age); person->name=@"mike"; [person say]; [YYPerson test]; NSLog(@"============"); [person doSomething:@"code" withTool:@"xcode"]; [person method1:1 :2 :3];// [person ttt]; [person method2:10 other:4]; return 0;}
// YYBook—规范定义一个类-2
// YYBook.h#import <Foundation/Foundation.h>@interface YYBook : NSObject{@public NSString* title; NSString* author; int amount; float price;}-(void)sell:(int)qty;-(void)buy:(int)qty;+(void)intro;@end// YYBook.m#import "YYBook.h"@implementation YYBook-(void)sell:(int)qty{ if(qty<=amount){ amount-=qty; NSLog(@"卖出%d本《%@》,库存%d本。",qty,title,amount); } else{ NSLog(@"《%@》库存%d本,不够销售。",title,amount); }}-(void)buy:(int)qty{ amount+=qty; NSLog(@"买入%d本《%@》,库存%d本。",qty,title,amount);}+(void)intro{// NSLog(@"this book is %@.",title);}@end// testBook.m#import "YYBook.h"int main(){ YYBook* bk=[YYBook new]; bk->title=@"iOS入门"; bk->author=@"Jobs"; bk->price=39.99; bk->amount=10; [bk buy:4]; [bk sell:45]; NSLog(@"《%@》的库存是%d本。",bk->title,bk->amount); YYBook* bk2=[YYBook new]; bk2->title=@"OC入门"; bk2->author=@"Will"; bk2->price=99.99; bk2->amount=3; [bk2 buy:2]; [YYBook intro]; return 0;}
———————–EOF——————-
- OC学习_2_关于类的定义
- OC学习篇之---类的定义
- OC学习篇之---类的定义
- OC学习篇之---类的定义
- C++ Primer学习总结_2_类的初探
- 关于oc定义的一些问题
- OC学习(一)类的定义和对象的创建
- OC学习笔记(2)类的定义
- javascript学习(5)——[基础回顾]类_2_类的原型模式
- oc002---定义OC的类和创建OC的对象
- 定义OC的类和创建OC的对象
- UML学习_2_参与者
- OC中关于属性的一些基本定义
- 黑马程序员——Objective-C学习之定义OC的类和创建OC的对象
- OC类的成员变量的定义
- 关于OC学习中几个基础的类
- OC语言基础内容 类的定义 第一个OC
- OC学习之道:关于OC的属性的介绍
- Dalvik和JVM的区别
- tinyXML(1)认识xml
- chrome支持本地ajax
- ZZULIOJ--1798
- Linux-CentOS XAMPP Apache 支持mp4与flv拖动播放的功能模块
- OC学习_2_关于类的定义
- 2015中国电商行业的三种商业模式解析
- 框架的创建和使用
- hadoop2.6安装
- 第十三周--数据结构- 拓扑排序算法验证
- [新手学Caffe之三]如何在Caffe中加入新的layer并利用Matlab进行调试
- 排序算法——快速排序
- GitHub for Visual Studio使用讲解
- mysql日志总结