------- android培训、java培训、期待与您交流! ----------
继承:
1,基类的私有属性能被继承,但不能被使用
2,OC继承是单继承,也就是一个类只能继承一个父类,不能继承多个父类。
方法重写
方法的重写,从父类继承的方法,可能这个方法并不适合子类,可以在子类中重写父类的方法。
注意事项:
1,子类不能定义和父类同名的变量,但是可以继承父类的变量
2,OC类支持单一继承,不支持多继承。
3,OC支持多层继承
继承的目的
1,从面向对象的角度来看,是为了建立一种类的层次关系,更接近于现实世界,因为面向对象不是源于某一种语言,而是源于现实世界。
2,从程序的角度,继承的目的是建立类的层次关系后实现多态。目的是多态。代码的重用性,灵活性只是继承机制带来的好处,或者优点。
方法的重写
方法的重写,从父类继承的方法,可能这个方法并不适合子类,可以在子类中重写父类的方法。
@interface Animal : NSObject {
int _tuiNum; //退的个数
int _eyeNum; //眼睛个数 }
-(void)setTuiNum:(int)tuiNum; -(void)setEyeNum:(int)eyeNum; -(int)tuiNum;
-(int)eyeNum;
-(void)eat; -(void)run;
#import "Animal.h"
@interface Dog : Animal {
}
-(void)eat; //覆盖父类的eat的方法 @end
方法重写后,在方法中可以通过super来调用父类方法。
@implementation Dog
-(void)eat{
[super eat];
}
@end
继承体系中方法调用顺序
1、在自己类中找
2、如果没有,去父类中找
3、如果父类中没有,就去父类的父类中
4、如果父类的父类也没有,就还往上找,直到找到基类(NSObject)
5、如果NSObject也没有就报错了
变量修饰符在子类中的访问
1)@private私有成员是能被继承,不能被外部函数访问。
2)@public公有成员能被继承,也能被外部方法访问。
3)@protected保护成员能够被继承、在子类中使用,但不能够被外部函数访问。
实例变量作用域使用注意事项
(1)在@interface @end之间声明的成员变量如果不做特别的说明,那么其默认是protected的。
(2)一个类继承了另一个类,那么就拥有了父类的所有成员变量和方法,注意所有的成员变量它都拥有,只是有的它不能直接访问。