------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------
一.类的声明与实现
1.@interface和@implementation的分工
- @interface就好像是暴露在外面的时钟表面
- @implementation就好像是隐藏在时钟内部的构造实先
2.interface 里面不允许初始化(即赋初值),通过指针在main函数中初始化;
static int wheels ; //错误写法,不能随便将成员变量当作c语言中的变量来使用,不能用static修饰
二.OC方法与函数的区别
- 对象方法都是以“-”开头
- 对象方法的声明必须写在@interface和@end之间,对象方法的实现必须写在@implementation和@end之间
- 对象方法只能用对象调用
- 函数能写在文件中的任何位置,函数归文件所有,但在@interface和@end之间不能写
- 函数调用不依赖对象
- 函数内部不能直接通过成员变量名来调用成员变量,只能通过指针
三.方法的命名和调用
1.没有参数的方法
例如:-(void)run;
- 减号:表示是OC对象方法
- void:方法的返回值类型
- run:方法名
2.有参数的方法
例如:-(int)pingFang:(int) num;
- 减号:方法类型,对象方法
- int:返回值类型
- pingFang::方法名,注意冒号也是方法名的一部分
- int:参数类型
- num:参数名称
oc中的数据类型必须用小括号括起来(方法的返回值类型,方法的参数类型)
同一个类中不允许两个对象方法同名
3.无参方法的调用
[c run] // c为指向拥有run方法的对象的指针
4.有参方法的调用
[c pingFang:5] // c为指向拥有pingFang:方法的对象的指针
5.匿名对象
没有将创建出来的对象赋值给该类型的指针
Car *c=[Car new];
c->speed=300
[c run];
NSLog(speed);
//这里的输出是:300
[Car new]->=-300;
[[Car new] run]; //又创建一个新的对象
NSLog(speed);
//这里的输出是:0
产生这种情况的原因:因为[Car new]这句代码每次都会创建一个新对象,所以来两个对象不同