objective-C学习笔记(六)继承与多态

封装 encapsulation

    隐藏对象内部实现细节,对外仅提供公共接口访问。

    (说白了就是属性啊,方法啊全都写在类内,对外只提供访问,不需要了解细节)

继承 inheritance

    一个类型在另外类型基础上进行的扩展实现。

多态 polymorphism

    不同类型针对同一行为接口的不同实现方式。

OBJC的继承

【单继承】每一个类只能有一个基类,子类自动继承基类的:

     ·实例变量

     ·属性 

     ·实例方法

     ·类方法

     了解所有类的根类:NSObject

  继承的两层含义:

     成员复用: 子类复用基类成员

     类型抽象: 将子类当作父类来使用(IS-A关系准则)

  在子类的对象内存中,可以找到一个完全的父类对象内存。

  继承中的init和dealloc

      子类自动继承基类的初始化器

      子类也可以重写基类初始化器,此时子类初始化器必须首先调用基类的一个初始化器(手工调用 self = [super init];)。

      子类可以选择继承基类析构器,或者重写基类析构器。

      子类析构器执行完毕以后,会自动调用基类析构器(后置调用,且不支持手工调用 [super dealloc]会报错,除非关闭ARC)。

      子类析构器自动具有多态性。  

   Tips:尽量避免在父类init和dealloc中调用子类重写的方法。因为子类在初始化的时候,会自动前置调用父类的初始化器,而父类的初始化器里面调用子类重写方法的话,子类都还没有初始化完毕,这个方法就会报错。析构器也是一样,因为子类重写的析构器,会在最后调用父类的基析构器(后置调用),这时候父类析构器里还有调用子类的方法的话,那些内存早就已经被释放掉了,直接回报错。

 多态 运行时多态 Polymorphism

   子类在父类统一行为接口下,表现不同的实现方式。

   重写与重载

       重写:(与父类同名同参数方法)子类可以重写父类的方法。

       重载:(与父类同名不同参数方法)OBJC不支持方法重载,

               外部参数不同就直接是另一个方法;外部参数相同而内部参数不同(参数名或者类型)会直接报错。

   继承自父类的方法,需要重写的话,直接在实现类上重写就可以了,不需要重新在接口类中声明。

   self和super

   self具有多态性,可以指向不同子类

   super没有多态性,仅指向当前父类

    

转载于:https://www.cnblogs.com/dom075/p/5315280.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值