父类中定义的实例变量及方法在派生类中可以直接调用。
#import <Foundation/Foundation.h>
@interface Animal : NSObject
{
int _age;
}
-(void)eat:(NSString *)foodname;
-(void)run;
@end
#import "Animal.h"
@implementation Animal
-(void)eat:(NSString *)foodname{
NSLog(@"正在吃%@",foodname);
}
-(void)run{
NSLog(@"动物正在跑");
}
@end
#import "Animal.h"
@interface Dog : Animal
-(void)lookhome;
@end
#import "Dog.h"
@implementation Dog
-(void)lookhome{
NSLog(@"警戒状态");
}
@end
#import <Foundation/Foundation.h>
#import "Dog.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
Dog *d1 =[Dog new];
[d1 run];
[d1 lookhome];
}
return 0;
}
如上可见,派生类可直接调用父类的方法及实例变量。
注意:
1)基类的私有属性能被继承,不能被使用。
2)OC中的继承是单继承:也就是说一个类只能一个父类,不能继承多个父类 。
3)继承的合理性:。
2、方法的重写
方法的重写,从父类继承的方法,可能这个方法并不适合子类,可以在子类中重写父类的方法。
在调用时,先查找当前类有没有自己的方法,如果有先调用自己的,如果没有,查看父类,若还没有,则继续向上查找。
3、继承的注意事项
1)子类不能定义和父类同名的变量,但是可以继承父类的变量
2)OC类支持单一继承,不支持多继承
3)OC类支持多层继承
|
|