一、基本概念
继承:通过拓展或修改既有类来定义新类的方法称为继承。其中既有类称为父类,新类称为子类。
程序中的“对象”和现实中的没什么区别,子女继承父母,自然就拥有父母的所有资源,子类继承父类同样拥有父类的方法和成员变量。
这里猫类和狗类继承自动物类,白猫类和黑猫类继承自猫类。
- 继承的好处:
- 抽取出重复的代码;
- 建立类和类键的联系。
- 继承的缺点:
- 代码的耦合性变强。
二、OC 中的继承
@interface Animal : NSObject
// Animal 类继承自 NSObject 类,获得 NSObject 类的方法。
@end
OC 是单继承语言。其中** NSObject **基本上是所有类的根类。
三、继承的使用注意
- 编译器从上往下执行,所以子类前面至少要有父类的声明。
- OC 不允许子类和父类拥有相同名称的成员变量名。
- OC 中子类可以拥有和父类相同名称的方法,子类调用时会优先调用自身的该方法。
重写:即子类重新实现了父类中的方法,覆盖父类的实现。
示例:Person 类继承 NSObject 类,Student 类继承 Person 类。
示例 创建一个 Student 类型的对象 Student *****stu = [ [ Student alloc ] init];
此时会把 Student 类及其父类加载进内存。
- 每个类中都有一个** super class 指针,该指针指向其父类。对象有一个 isa **指针指向该对象的类。
四、继承和组合
- 继承适用的场合:
- 当两个类拥有相同的属性和方法时,就可以将相同的属性和方法抽取到一个父类中。
- 当 A 类完全拥有 B 类的部分属性和方法是,可以考虑让 B 类继承 A 类,也可以考虑使用组合。
继承:### 是 xxx,如 狗 是 动物,可以让狗继承动物类。
组合:### 拥有 xxx,如学生有书,可以让书这个类 作为学生的属性。
五、super 关键字
在子类中重写方法时,super 关键字可以让调用者跳过这一层而调用父类中的方法。
- 作用:
- 直接 调用父类中的某一方法。
- super 处在对象方法中,就是调用父类对应的对象方法;处在类方法中,就是调用父类对应的类方法。
- 使用场景:子类在重写父类方法时,想要保留父类的一些行为。
待续。。。
网友评论