继承代表两个类之间的关系
Dog:Animal 类似java中的 Dog extends Animal
Dog *pDog=[Dog new];类似java中的 Dog dog=new Dog();
[pDog bark];类似java中的 dog.brak();
ARC机制,自动生成内存管理代码
setAge:(int)age; <--setAge(int age);
继承的好处:
1、抽取重复代码
2、建立了类之间的关系
NSObject 的类方法 +new
另外一个root class NSProxy
注意点:
1、父类要写在前面
2、OC不允许父类和子类出现相同的成员变量 (java可以)
3、子类可以使用父类的成员方法 ,成员方法可以相同--方法的重写/覆写
覆盖父类以前的做法
也可以父类的方法声明,子类去实现
成员方法/类方法,先去子类找再去父类找
isa指针声明在NSObject中 isa成员变量
superclass指针
继承的使用场合:
1、当两个类有相同的属性和方法就可以将相同的东西抽取到一个父类中
2、当A类拥有B类的部分属性和方法的时候,可以考虑让B类继承A类
组合:Score成为Student的一部分(两者有相同的属性),继承在逻辑上讲不通,使用组合
Score * _score;作为Student的成员变量 -->组合
继承:A是B
组合:A拥有B
super关键字
因为子类如果覆写父类的方法就完全覆盖了,有时候我们想使用父类
方法中的一些代码/先执行父类方法,就可以使用 [super walk]
当前方法是类方法/成员方法,类方法中使用 super就调用父类的
类方法
super的使用场景
子类重写父类的方法想保留父类的一些行为