继承性,封装性,多态性
继承性
子类获得父类的特性就是继承
被继承的这个类我们称之为父类/ 超类
继承了某个类的类我们称之为子类
在声明子类的时候,在子类名称后面通过:父类名称方式来实现继承
@interface子类名称 : 父类名称
@end
当B类继承A类, 那么B类就拥有A类所有的属性和方法(类方法/对象方法)
继承其它特性(方法重写)
如果子类中有和父类中同名的方法, 那么我们称之为方法重写
注意: 继承中的方法调用顺序, 如果自己有就调用自己的, 如果自己没有就调用父类的
方法的调用顺序, 先自己再父类, 如果父类中没有再爷爷类, 如果爷爷类再没有就找爷爷的爸爸类
如果一直找到NSObject类都没有找到, 那么就会报错
reason:-[Iphone signalWithNumber:]: unrecognized selector sent to instance 0x1003043c0
注意:ee)不能重写
方法重写的使用场景
使用场景:当从父类继承的某个方法不适合子类,可以在子类中重写父类的这个方法
继承的条件
不要以为继承可以提高代码的复用性, 以后但凡发现多个类当中有重复代码就抽取一个父类只要满足一定的条件我们才能使用继承
条件: XXXX 是 XXX / 某某某 is a 某某某
继承的优点是什么
提高代码的复用性
可以让类与类之间产生关系, 正是因为继承让类与类之间产生了关系所以才有了多态
继承的缺点是什么
耦合性太强(依赖性太强)
封装性
封装: 屏蔽内部实现的细节, 仅仅对外提供共有的方法/接口
好处: 保证数据的安全性,将变化隔离
规范: 一般情况下不会对外直接暴露成员变量, 都会提供一些共有的方法进行赋值
成员变量都需要封装起来
一个类把自己的成员变量暴露给外部的时候,那么该类就失去对该成员变量的管理权,别人可以任意的修改你的成员变量。
多态性
多态就是某一类事物的多种形态
在程序中如何表现: 父类指针指向子类对象
有继承关系
子类重写父类方法
父类指针指向子类对象
多态的优点
提高了代码的扩展性,复用性
多态的注意点
如果父类指针指向子类对象, 需要调用子类特有的方法, 必须先强制类型转换为子类才能调用