一、继承
JAVA中的继承是单继承,也就是一个类只有一个父类。
通过继承,子类拥有父类的所有属性和方法(当然,父类的修饰符不能是private),并实现代码复用。
继承的语法:
class 子类 extends 父类{
... ...
}
*****************************************************************************************************************
来一段代码吧:
先写一个父类Animal类
然后写一个Dog类,由于狗狗属于动物类,所以Dog类继承Animal类
在给类命名时,记得选择继承的父类。步骤:
在Superclass右边选择浏览
输入父类Animal的类名,选中即可
这样就能继承父类啦~
再写一个Initial类带main函数,实例化一个dog对象,赋值并调用函数
执行结果:
动物可以吃东西
*********************************************************************************************************************
二、方法的重写
子类可以重写继承的父类的方法,在调用方法时会优先调用子类重写的方法。
当 方法名、返回值类型、参数类型及个数 都与父类继承的方法相同,才能叫方法的继承。
*********************************************************************************************************************
在刚刚的代码的基础上进行方法的重写。子类Dog类要重写eat()方法。
将Animal类的eat()方法复制到Dog类,并把输出内容作修改。main函数不做修改
执行结果:
可以看到,调用eat()方法时优先调用子类重写的方法。
**************************************************************************************************************************
三、继承的初始化顺序
在创建一个对象时,构造方法相当于初始化一个对象。
继承初始化顺序为:
1. 先初始化父类,再初始化子类
2. 先执行初始化对象中属性,再执行构造方法中的初始化
****************************************************************************************************************************
用代码来验证:
在Animal类写一个构造函数,输出一条语句
在Dog类也照样写一个构造函数输出语句
main函数不改。执行结果:
可以看到,在创建新对象时,先创建父类对象,再创建子类对象。
然后在Animal类中给对象初始化中的属性和构造方法中的属性分别赋值
main函数输出animal对象的age
执行结果:
可以看到,最后的animal.age是构造方法中赋的值20。也就是说,创建一个对象时会先执行初始化对象中属性,再执行构造方法中的初始化(初始化时age=10,构造方法中age=20,后执行的构造方法的age=20将age=10覆盖了)
***********************************************************************************************************************************************
总结:当我们创建一个子类的对象时,会先创建父类对象,父类对象进行属性初始化,再执行父类构造方法。
然后创建子类对象,子类对象进行属性初始化,再执行子类构造方法。