什么是继承
继承是基于现有类,定义新类的代码复用技术。新类拥有原来类的除@private修饰的实例变量,拥有公开方法的声明。还可以添加自己的实例变量,和方法声明。
继承的特性
- OC是单继承的。
一个类,只能有一个直接父类。 - 继承是可以传递的。
A继承B,B继承C,那么A也会继承到C中的实例变量和方法。 - 子类可以重写父类的方法。
语法
@interface ClassName : NSObject
@end
注:
1. 继承用 : 表示。
2. ClassName称为子类
3. NSObject称为父类或超类
子类可以从父类得到什么
- 接口中声明的非@private实例变量。
- 接口中声明的方法。
- 父类遵守的协议,子类也会默认遵守。
关于方法的重写和重载
重写
子类定义的方法,名称和父类的相同,这叫做方法的重写。会覆盖掉父类的方法实现。
**方法可以重新,但实例变量不可以。
重载
Java中的重载是:同一个类中方法名称相同,参数个数或类型不同的方法是方法重载,在OC中,中缀符和参数个数匹配,但也是方法名的一部分,若参数个数不同,就是不同的方法名。所以没有真正的重载这一说法。
注意事项
- Objective-C是单继承的。
- 谁的实例变量由谁进行维护。
- 要使用方法访问父类的实例变量。
- 类的对象中有一个isa指针,指向的是它所属的类。
- 每一个方法调用都有一个self隐藏参数,它是指向了接受消息的对象的指针。