封装|继承|多态 #
封装 #
说明一个类的属性或行为与其他类的关系
隐藏了类的内部实现机制,使得可以在不影响使用的情况下,改变类的内部结构,同时也保护了数据
对于外界而言,内部细节被隐藏,暴露出来的仅是访问方法
- 属性的封装:
使用者只能通过事先定制好的方法来访问数据,可以方便地加入逻辑控制,限制对属性的不合理操作 - 方法的封装:
使用者按照既定的方式调用方法,不必关心方法的内部实现,便于使用、便于修改、增加代码的可维护性
目标是实现低耦合,高内聚
继承 #
从已有的类派生出新的类,新的类吸收已有类的数据属性和行为,并可以扩展新的能力
本质上是特殊到一般的关系,即is-a关系
子类继承父类,表明子类是一种特殊的父类,并具备父类不具有的一些属性或方法。
从多种实现类中抽象出一个基类,使其具备多种实现类的共同特性,当实现类使用extends关键字继承了基类后,实现类就具备了这些相同的属性
继承的类叫子类(派生类或超类),被继承的类叫做父类(或基类)
Java通过extends关键字实现继承,父类中private定义的变量和方法不会被继承,不能在子类中直接操作父类通过private定义的变量以及方法。
继承避免了对一般类和特殊类之间共同特征进行的重复描述,通过继承可以清晰地表达每一项共同特征所适应的概念范围。在一般类中定义的属性和操作
适用于这个类本身和它以下的每一层特殊类的全部对象。
运用继承原则使得系统模型清晰简练
多态 #
指的是类与类之间的关系
两个类之间由继承关系,存在方法的重写。于是可以在调用时由父类引用指向子类对象。
多态必备三个要素:继承、重写、父类引用指向子类对象
为什么这些特性可以让我们写出更好的代码? #
- 封装:增加代码可复用性
- 继承:增加代码可复用性,使得系统模型更加清晰,减少重复描述
- 多态:增加代码灵活性,实现随便变,都可以通过统一的父类引用来调用实际对象方法