@interface Car : NSObject
{
int _wheels;
int _speed;
}
- (void)setWheels : (int) wheels;
- (int)wheels;
- (void)setSpeed : (int) speed;
- (int)speed;
@end
@implementation Car
- (void)setWheels : (int)wheels
{
_wheels=wheels;
}
- (int)wheels
{
return _wheels;
}
- (void)setSpeed : (int) speed
{
_speed=speed;
}
- (int)speed
{
return _speed;
}
@end
void main()
{
Car *p = [Car new];
[p setWheels:5];
[p setSpeed:120];
NSLog(@"车的轮子为%d,速度为%d",[p wheels],[p speed]);
}
注意 : 调用对象的方法要用【】括起来;
错误 : bad sequence length in constant string,字符串编码格式错误,NSLog输出中文的话,文件只能保存成UTF-8
格式。
OC的弱语法:OC在运行中才会检测方法有没有实现。编译有警告,连接可通过
类方法
类方法注意:
1.用 + 表示,和 - 区别;
2.类方法的调用也是要用【】括起
3.类方法只能用类名调用,不能用对象调用,否则会报:不识别消息的错误。
4.对象方法也不能用类名调用。否则会报:不识别消息的错误(找不到方法)。
5.类方法中不能访问实例变量。
类方法好处:
1.不依赖对象,执行效率高。
2.能用尽量用。
类方法使用场合:
不使用成员变量的方法可定义为类方法;
继承
好处 : 1.抽取重复代码
2.建立子类之间的关系
注意 : 子类和父类不能有相同的成员变量
子类和父类的方法可以覆盖
当不适用继承时,又需要另一个类的内容时,可以用组合,就是在成员中定义一个对方的指针。
super使用在子类方法重写,同时调用父类方法的情形下。
多态
注意 : 调用方法时 ,会动态检查其真实类型;
局限性: 父类类型的变量 不能调用子类对象方法(不规范,但是可以成功)
多态核心代码:
#import <Foundation/Foundation.h>
@interface Person : NSObject
{
int _age;
}
@property int age;
@implementation Person
@end
@interface Student : Person
@end
@implementation Student
@end
int main()
{
Person *p = [ [Student alloc] init];
p ->_age = 20;
return 0;
}