OC中类的类、方法
OC中类的定义分为两部分:
1)累的声明(规定当前类的:类名、属性、行为)
1 @interface 类名:父类名 2 3 { 4 5 //定义类的属性 6 } 7 8 //类的方法 9 10 @end
2)类的实现:
1 @implementation 类名 2 3 //方法的实现 4 5 @end
方法的声明格式:
方法的调用:
使用对象的调用方法就是OC的消息机制
OC语言中采用特定的语言调用类或者实例(对象)的方法称为消息发送或方法调用。
OC中方法调用种:
[类名或者对象名 方法名];
Car *car = [Car new];
OC中的方法分为两种:对象方法、类方法
对象方法:
1)对象方法以-开头如 -(void)xx;
2)对象方法只能由对象调用
3)对象方法中可以访问当前对象的成员变量
4)调用格式 [对象名 对象方法名];
类方法:
1)类方法以+开头 如 +(void)xx;
2)类方法只能由类来调用
3)类方法不能访问实例(成员)变量,因为类方法由类来调用,
并没有创建存储空间来存储类中的成员变量。
4)调用格式[类名 类方法名];
5)类方法的好处和适用场合:
不依赖与对象,执行效率更高,因为不用创建对象,节省内存空间。
带参数的方法的定义和实现:
C语言函数和OC对象方法的区别:
在工作中,通常把不同的类放在不同的文件中,每个类的声明和实现分开,声明写在.h头文件中,
实现写在对应的.m文件中去,类名是什么,文件名的前缀就是什么。
假设有两个类,分别是Person类和Dog类,则通常会有下面五个文件:
1)Person.h Person类声明文件
2)Person.m Person类实现文件
3)Dog.h Dog类实现文件
4)Dog.m Dog类实现文件
5)Main.m主函数(程序入口)
在主函数以及类的实现文件中只要使用#import包含相应的头文件。
1 Dog类 2 3 -(void)run; 4 5 想调用run方法, 6 7 Dog * dog = [Dog new]; 8 [dog run]; 9 10 Dog类 11 12 +(void)run; 13 14 想调用run方法, 15 16 [Dog run];
OC匿名类的使用方法:
1 先定义一个车类 2 @interface car:NSObject 3 { 4 int _speed; 5 } 6 -(void) stop; 7 @end 8 //实现类 9 @implementation car 10 -(void)stop 11 { 12 NSLog(@“ting”); 13 } 14 @end 15 @interface person:NSObject 16 -(void) gohome 17 car *)car; 18 @end 19 @implementation person 20 -(void)gohome 21 car*)car 22 { 23 [car stop]; 24 } 25 @end
1 /* 2 1、使用匿名类访问实例变量(只能访问一次) 3 以后再访问,实际上访问新的空间 4 [car new]->_speed = 250; 5 NSLog(@“_speed = %d”,[car new]->_speed ); //打印结果为0,因为匿名类只能访问一次, 6 2、使用匿名的类,可以调用方法 7 [[car new] stop]; == [[[car alloc ] init] stop] 8 [[car alloc] init] 等价与[car new] 9 10 匿名类作为方法的参数 11 person *p = [person new]; 12 car *c = [car new]; 13 1、[p go home:[car new]]; 14 2、[[person new] go home:[car new]]; 15 16 17 */
匿名类的优缺点:
优点:可以简化代码,方便方法调用
缺点:匿名对象实例化以后,只能正确的使用成员变量一次