黑马程序员技术交流社区

标题: 类的继承和派生 [打印本页]

作者: Storm_    时间: 2015-11-3 18:49
标题: 类的继承和派生
父类中定义的实例变量及方法在派生类中可以直接调用。



#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类支持多层继承





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2