得
在《Think in java》中有这样一句话:复用代码是Java众多引人注目的功能之一。但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情。在这句话中最引人注目的是“复用代码”,尽可能的复用代码是我们程序员一直在追求的,现在我来介绍一种复用代码的方式,也是java三大特性之一---继承
5.1:什么是继承
继承顾名思义,继任,承接,传承的意思。那么我们先来看看生活中的继承关系有哪些?最常见的:父母子女;汽车,电动车,自行车和车。无论哪种车,都有具备车的特性。再比如说:家里面的电饭锅,电磁炉,电冰箱。他们都属于电器类,都具有名字这个属性,也都需要用电这个方法。如果在程序中我们一个个类去把这些重复的代码都写上去,那不是浪费时间和精力吗?我们能够从一个个对象中抽象出来一个类。那么我们也应该能够从具有包含关系的一个个类中抽象出一个具有共同属性和方法的新类,也就是父类。Java中的继承使用的是extends关键字,继承的类叫做子类(扩展类),被继承的类叫做父类(超类或者基类)。凡是这种可以有包含关系的类都能实现继承关系。
5.2:继承中的术语和注意事项
1、类:类是具有共同属性和行为的一组对象。它是创建对象的模板或蓝图。
2、子类:子类是继承其他类的类。它也称为派生类,扩展类或子类。
3、超类/父类:超类是子类继承功能的类。它也称为基类或父类。-通用的属性和方法
4、可重用性:正如名称所指定的那样,可重用性是一种机制,可以帮助您在创建新类时重用现有类的属性和方法。
5、Java中只支持单继承,即一个类只能有一个直接父类
5.3:使用继承
- 编写父类,创建公共的属性和方法
- 编写子类使用extends继承父类
- 编写子类中特有的属性和方法
注意:
- super关键字代表父类,只能出现在子类的方法和构造方法中
- 在子类构造方法中使用super调用父类构造方法,必须位于第一句;
- 子类不可以直接访问父类中定义为private的属性和方法 - private的东西是不能被继承的。
子类到底继承了父类哪些内容!!
继承了public, protected 修饰的属性和方法
如果子类和父类在同一个包下的话,还继承了默认修饰符修饰的内容
子类不能继承父类的情况:
- private修饰的属性和方法
- 子类和父类不再同一个包下,不能继承默认访问权限的成员
- 不能继承构造方法
5.4:什么时候使用继承
符合 is a 关系的设计时,可以考虑使用继承。
小狗是一个宠物,小猫是一个宠物
5.5:继承的优点
将子类共有的属性和方法抽取到父类中,减少重复代码,实现代码的重用