继承中两个类的关系
继承中两个类的名称:
关键字extends表明正在构造一个新的类继承自一个已存在的类。这个被继承的类,我们称之为:
1,超类(superclass)
2,基类(base class)
3,父类(parent class)
继承其他类的类被称为:
1,子类(subclass)
2,派生类(derived class)
3,孩子类(child class)
在Java的英文文档中,普遍使用超类(superclass)和子类(subclass)这一对词语
在国内,普遍使用父类和子类
从属关系上:
子类和父类表现为“is-a”的关系,仔细来说是“子类is-a父类”,也就是说子类可以看成是一个父类。反之则不行
三个层次解释:
1,代码层次。父类的引用指向一个子类的对象,语法上正确。
2,逻辑层次。
a,宏观设计。子类是继承父类的成员基础上还能添加新的成员,子类是父类的扩展,子类一定是一个父类。
b,微观构成。类是一种自定义数据类型,包括成员变量和成员方法。子类继承了父类的成员,实际上完全可以作为一个父类使用。
3,最直观的,教师是人,学生是人。
功能丰富程度上(补充):
尽管父类也被称作超类,但实际上子类的功能要比父类多,子类可以扩展父类
继承的优缺点
练习
- 在一款游戏中,我们有很三种类型的鸭子,这些鸭子都有共同属性,都可以叫(cry),都可以游泳(swim)
- 应该怎么编写这些鸭子类?
- 需求更改了,这些鸭子不能游泳了,但是都会飞(fly)
- 最后我添加了一种鸭子,第四种鸭子,这个鸭子不会飞
继承的好处与坏处
通过一个鸭子游戏,我们发现
- 好处
- 继承的出现减少了代码冗余,提高了代码的复用性
- 继承的出现,更有利于功能的扩展,提升可维护性
- 多态的前提(后面讲)
- 弊端
- 父类中对成员进行修改,会体现到每一个子类中,我们不可选择具体哪个子类生效
- 当儿子的坏处
- 父类中对成员进行修改,会体现到每一个子类中,我们不可选择具体哪个子类生效
继承的优点:
1,代码复用(方法,类)
2,提高了代码的可维护性(这是一把双刃剑)
3,弱化Java中的类型约束(多态的前提)
继承的缺点:
父类的修改可能会出现在所有子类中(我们无法选择这些修改可以反应在,哪些子类中,不可以反应在哪些子类中)