本章讲解objective-c继承的相关知识点和注意点。
如下:
1. 只有定义在@interface区域内的实例变量才能被子类继承,定义在@implement 里的变量是私有变量,不能被子类直接访问
只能通过getter和setter访问
换句话说只要父类内的实例变量不是定义在@implement中都可以被子类直接访问
但是: 如果在@implement中使用了@synthesize中,则子类不能直接访问父类的相应实例变量。(个人理解, 不一定准确)
2. 可以使用categories去给类动态添加一个方法。
3. @class指令
这个指令可以用#import代替, 但是它比#import效率高。
#import <Foundation/Foundation.h>
@class XYPoint;
@interface Rectangle: NSObject
@property int width, height;
-(XYPoint *) origin;
-(void) setOrigin: (XYPoint *) pt;
-(void) setWidth: (int) w andHeight: (int) h;
-(int) area;
-(int) perimeter;
@end
注意:如果在一个set方法里创建了另外的一个对象,则不能使用@class, 需要用#import
4. 方法重写
老生常谈的话题了。需要注意参数类型,个数, 返回值类型要跟父类保持一致。
5. 抽象类
抽象类是不会被创建实例的类。
如:NSNumber
6. 练习
注意下面的setter和getter的实现方法
setter, getter方法必须被@synthesize声明或者成对实现在@implement中,或者在@interface中使用nonatomic定义属性。