三大特性
- 封装
每个对象都包含它能进行的操作所需要的所有信息,这个特性称为封装
提炼出类 就是在做封装
封装的好处
- 良好的封装能减少耦合
- 类内部的实现可以自由修改
- 类具有清晰的对外接口
- 继承
对象的继承代表了一种"is-a"的关系,比如猫是哺乳动物,则猫继承了哺乳动物。反之,哺乳动物是猫就不成立了。
子类可以理解为父类的特殊化,因为除了具备父类的特性外,还具备自己的个性。子类可以完全替换父类,反之则不成立。
继承定义了类如何相互关联,共享特性
继承的三个功能
- 子类拥有父类非private的属性和功能(public protected etc. protected对子类公开,对其他类不公开)
- 子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能
- 子类可以用自己的方式实现父类的功能(方法重写)
继承的好处 - 使得子类公共的部分都放在了父类,使得代码得到了共享,避免了重复。
- 使得修改或扩展继承而来的实现都较为容易
继承的缺点 - 父类变,则子类不得不变
- 继承会破坏包装,父类的实现细节暴露给子类,增大了两个类之间的耦合
使用继承的时机
当两个类具备'is-a'的关系时,可以用继承
当两个类是'has-a'的关系时,不适合继承。比如人有两只手 飞机场有飞机
- 多态(理解起来不够直观)
多态表示不同的对象可以执行相同的动作,但要通过它们自己的实现代码来执行
三个注意事项
- 子类以父类的身份出现
- 子类在工作时以自己的方式来实现
- 子类以父类的身份出现时,子类特有的属性和方法不可以使用
实现方式 - 父类中的元素加virtual关键字
- 子类用override关键字来覆盖父类方法
具体实现多态的原理需以后熟悉