继承


  1. 继承的目的:儿子类想拥有父亲类中的所有的成员,但是不想自己定义,想凭空拥有
  2. 语法
@interface 类名 : 父亲类的名称
@end
  1. 效果
  • 拥有父类所有成员
  1. 继承是类在继承,而不是对象在继承,对象与对象毫无关系
  • 不要为了继承而继承
  1. 如果有一个成员不是所有子类都拥有,那么就不应该定义在父类之中,父类应该定义所有子类拥有的。
  2. 特点
  • 单根性
  • 传递性:a类继承b,b继承c,c同时拥有a类和c类的成员
  • NSObject类:有一个new类方法,类要能创建对象,必须使用这个父类
  1. 子类与父类同名问题
  • 子类不能存在和父类同名的属性
  • super关键字:
    1. 可以用在类方法和对象方法之中
    1. 在对象方法中可以使用super关键字调用当前对象从父类继承裹来的方法
    1. 在类方法中 super 关键字可以调用当前类从父类继承过来的类方法
    1. 类方法也能被子类继承,父类中的类方法可以使用父类名来调用,也可以使用子类名来调用
    1. 在子类的方法中,可以使用super关键字调用父类的类方法
    1. super只能用来调用父类的对象方法或者类方法,不能访问属性 8.子类从父类继承
  • 相当于子类模版中拥有了父类模版中的所有的成员
  • 创建一个子类对象,仍然是根据子类模版来创建对象,字不够子类模版中拥有父类模版中的成员。所以,子类对象中即有子类的成员也有父类的成员
  • super特指这个方法是从父类继承过来的

继承的本质

  1. 创建一个对象,这个对象在内存中是如何分配的
  • 子类对象中有自己的属性和所用父类的属性
  • 代码段中的每一个类都有一个叫做isa的指针,这个指针指向他的父类,一直指到NSObject.
IDEA
学习