黑马程序员技术交流社区

标题: OC学习之继承 [打印本页]

作者: 毛强    时间: 2015-8-18 12:26
标题: OC学习之继承
交通工具是一个基类(也称作父类),通常情况下所有的交通工具所共同具备的特性是速度与额定载人的数量。
但按照生活常规,我们来继续给交通工具细分的时候,我们会分别想到有汽车类和飞机类等等,汽车类和飞机类同样具备速度和额定载人数量这样的特性,而这些特性是所有交通工具所共有的,那么当建立汽车类和飞机类的时候我们无需再定义基类已有的数据成员,而只需要描述汽车类和飞机类所特有的特性即可,飞机类和汽车类的特性是在交通工具类原有特性基础上增加而来的,那么飞机类和汽车类就是交通工具的派生类(也称作子类)。以此类推,层层递增,这种子类获得父类的特性的概念就是继承。
下面根据例子来说明一下:
//---------------------------------main.m----------------------------------------
#import
#import "Animal.h"
#import "Dog.h"
#import "Cat.h"

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        Cat *cat1  = [Cat new];
        [cat1  catchMouse];
        [cat1 eat:@"玉米"];
        [cat1 run];
        
        Dog *dog1 = [Dog new];
        [dog1 lookHome];
        [dog1 eat:@"骨头"];
        [dog1 run];
        
        
    }
    return 0;

}

//----------------------------Animal.h---------------------------------
#import

@interface Animal : NSObject

-(void)eat:(NSString*)foodName;
-(void)run;

@end
//--------------------------------Dog.h---------------------------------
#import
#import "Animal.h"

@interface Dog : Animal

-(void)lookHome;

@end
//--------------------------Cat.h--------------------------------
#import "Animal.h"

@interface Cat : Animal
-(void)catchMouse;

@end
程序执行结果为:OC学习之继承
总结:从结果中我们可以看出Dog类、Cat类 继承于Animal类,因此可以调用Animal类中的eat方法。继承是指一个对象直接使用另一对象的属性和方法。继承可以使得子类具有父类的各种属性和方法,而不需要再次编写相同的代码。在令子类继承父类的同时,可以重新定义某些属性,并重写某些方法,即覆盖父类的原有属性和方法,使其获得与父类不同的功能。同类事物具有共同性,在同类事物中,每个事物又具有其特殊性。运用抽象的原则舍弃对象的特殊性,抽取其共同性,则得到一个适应于一批对象的类,这便是基类(父类),而把具有特殊性的类称为派生类(子类),派生类的对象拥有其基类的全部或部分属性与方法,称作派生类对基类的继承。




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