继承
【认识继承】
1、从生活角度
父类 子类
生物 动物
动物 人类
就是集合的包含关系(子类包含父类)
2、继承也叫派生,它们是同一个意思。描述的是同一问题,只是看待问题的
角度不同。父类的属性和方法子类可以直接拥有叫继承;子类在父类的基
础上衍生出新的特性叫派生。
3、父类和子类的称呼
父类 parentClass superClass 基类 超类
子类 childClass subClass 派生类 子类
【继承作用】
总的来说,子类可以拥有父类所有的成员方法和非私有的成员变量
1、创建大量相似的类(象棋:定义棋子作为基类,其它棋子继承它)
2、统一接口(见猫狗排序练习)
3、继承自一个官方或第三方的类,在上面稍加修改以适应当前工程
【继承语法】
@interface JYChild : JYParent
@end
子类 : 父类
@protected
//受保护的(默认属性),可以被继承,外部方法不能访问
int _age;
int _weight;
@private
//私有的,不能被继承
int _money;
@public
//公有的,可以被继承,外部方法可以访问
NSString *_name;
说明:成员方法没有这些权限设置,默认全是公有的
【重写】
1、若父类的方法不适合子类,子类可以重新实现
2、有些时候父类的方法不够完善,子类可以修改父类的方法
【多态】
1、父类的指针可以指向子类的对象,方法的执行看对象而不看指针
2、从消息机制上,给不同对象发送同一消息,有不同的响应
【工厂类】
是OC中的一种设计模式,将多个类集成到一个超类之下,以超类对外公开,这样可以确保功能的完整性。但是工厂类是不能被继承的。
工厂类:NSString/NSArray/NSDictionary/NSNumber
【NSValue】
功能:存储任意数据类型的变量
练习:
1、设计猫狗类,要求尽可能简单
猫:
属性:身高、体重
行为:跑、跳、洗脸
狗:
属性:身高、体重
行为:跑、跳、摇尾巴
2、自定义一个结构体,要求将结构体变量存放到NSValue对象中