美文网首页
Objective-C继承机制

Objective-C继承机制

作者: kidzss | 来源:发表于2016-03-29 14:45 被阅读258次

    Objective-C继承机制

    一、继承

    1.基本概念

    一个新类可以从已有的类派生出来,这个过程称为继承,新类称为子类,已有的类称为父类或超类。

    2.继承的特点:

    实现代码重用:子类可以重用父类的实例变量和方法。

    子类可以增加实力变量和方法扩展父类,但不能重载父类的实例变量

    所有类型都有一个公共基类:NSObject

    3.NSObject类

    允许定义自己的根类,但通常不这样做,而是利用现有的类

    NSObject提供引用计数,内存分配,运行时类型识别等信息,用户只需要把自定义类型声明未NSObject子类就可以重用这些机制。

    例如子类中可以[super init]调用父类的初始化方法。[superdealloc]调用父类的释放内存方法等。

    4.继承语法格式:

    @interfacemyClass:NSObject

    @end

    只支持公有继承和单继承

    5.子类继承父类所有的方法。如果子类于父类同名方法,参数个数、类型和返回值一致,那么子类方法会覆盖父类方法,相当于C++中的虚函数进行重写override.

    6.NSObject类实现了alloc,delloc,release,init方法.

    alloc不需要在子类中重载

    dealloc中释放在初始化中申请的内存,一般可能重载

    release使对象的引用计数-1,当对象的引用计数为0时,系统自动调用对象的delloc方法释放对象的内存,此方法一般不需要重载。

    init一般需要重载,初始化对象。

    一般的子类init方法格式:

    -(id)init

    {

    if(self = [super init])

    {

    … // 初始化子类实例变量

    }

    return self;

    }

    二、继承下的消息传递

    继承下消息传递规则:先本类再父类,若一直到根类中都没有找到相应消息则报错。

    三、组合

    1.概念:如果一个类的实例变量是另外一个类的对象,则这两个类是“hasa”关系,表达的是整体-部分关系,但再objective-C中这样的实例变量只能是对象指针,不能是对象。这种方式叫做组合。

    2.特别注意:注意组合方式下对象指针作为实例变量的init和set方法,一般会重写dealloc方法释放内存。一定要遵循内存管理机制,防止内存泄漏。

    关于内存管理详见《Objective-C内存管理机制》一文。

    相关文章

      网友评论

          本文标题:Objective-C继承机制

          本文链接:https://www.haomeiwen.com/subject/zedslttx.html