java继承调用先后_「继承顺序」JAVA继承顺序 - seo实验室
繼承順序
當使用繼承這個特性時,程序是如何執(zhí)行的;
繼承的初始化順序
1.初始化父類再初始子類
2.先執(zhí)行初始化對象中屬性,再執(zhí)行構(gòu)造方法中的初始化
當使用繼承這個特性時,程序是如何執(zhí)行的呢,也就是說我們需要關(guān)注繼承的初始化順序,當我們創(chuàng)造一個對象的時候,所執(zhí)行的構(gòu)造方法就相當于初始化一個對象,所以如果我們需要證明初始化一個對象的時候,它是不是會先初始化父類,然后初始化子類
初始化其實就相當于執(zhí)行類的構(gòu)造方法,所以我們只需要重寫構(gòu)造方法,在類的構(gòu)造方法中輸出一句話,看它到底是什么時候輸出的,就知道他們的執(zhí)行順序了
舉個例子:
Animal類:package com.test;
public class Animal {
public int age;
public String name;
public void eat(){
System.out.println("動物是可以吃東西的");
//這里的父類只是描述動物可以吃東西
}
public Animal(){
System.out.println("Animal類執(zhí)行了");
}
}
Dog類:package com.test;
public class Dog extends Animal{
public Dog(){
System.out.println("Dog類執(zhí)行了");
//我們在Dog類定義一個無參的構(gòu)造方法
}
}
主函數(shù)Initail類:package com.test;
public class InitailClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
Dog d = new Dog();//主函數(shù)里只是創(chuàng)建了子類對象
d.age = 10;
d.name = "xiaotian";
d.eat();
}
}
我們看一下它的執(zhí)行順序:
運行結(jié)果為:
可以看出僅僅是創(chuàng)建了子類對象,但它是先執(zhí)行了父類的構(gòu)造方法,然后執(zhí)行子類的構(gòu)造方法.我們就能證明當我們創(chuàng)建對象的時候,它是優(yōu)先創(chuàng)建父類對象,然后創(chuàng)建子類對象
如果對象中有屬性,屬性和我們的構(gòu)造方法在初始化的時候哪一個先執(zhí)行呢
例子如下:
Animal類:package com.test;
public class Animal {
public int age=10;//為屬性賦初值
public String name;
public void eat(){
System.out.println("動物是可以吃東西的");
//這里的父類只是描述動物可以吃東西
}
public Animal(){
System.out.println("Animal類執(zhí)行了");
age = 20;//在執(zhí)行構(gòu)造方法的時候再為age賦一個值
//如果在程序中輸出這個值,這個值其實應(yīng)該是后一個的值,因為后面賦的值會把前面的覆蓋掉
}
}
主函數(shù)Initail類:package com.test;
public class InitailClass {
public static void main(String[] args) {
// TODO Auto-generated method stub
//創(chuàng)建父類對象animal
Animal animal = new Animal();
System.out.println("animal age:"+animal.age);
Dog d = new Dog();//主函數(shù)里只是創(chuàng)建了子類對象
d.age = 10;
d.name = "xiaotian";
d.eat();
}
}
運行結(jié)果為:
顯然構(gòu)造方法的初始化方式是后執(zhí)行的,所以屬性的初始化是先執(zhí)行的:
總結(jié)一下:
當我們創(chuàng)建一個子類對象的時候,先創(chuàng)建父類的屬性進行初始化,然后執(zhí)行父類的構(gòu)造方法,接著執(zhí)行子類的屬性進行初始化,最后執(zhí)行子類的構(gòu)造方法。
相關(guān)閱讀
把姓名按照姓氏筆畫排序,這是在實際工作中經(jīng)常回遇到的,使用過Excel的朋友都知道Excel中默認的排序方式是拼音排序,現(xiàn)在的問題是如何
最近有在做一個初始化設(shè)備的動作,但是發(fā)現(xiàn)在相同的文件夾下已經(jīng)有兩個module_init,當我想再添加一個時,發(fā)現(xiàn)我添加的這個是最后執(zhí)行
ATM機問題域及詞匯表:https://blog.csdn.net/ashdkl/article/details/80510951ATM機用況圖:https://blog.csdn.net/ashdkl/article
隊列也是一種線性表,是一種先進先出的線性結(jié)構(gòu)。隊列只允許在表的一端進行插入(入隊)、刪除(出隊)操作。允許插入的一端稱為隊尾,允
fill:填充的意思stroke:筆的意思,可理解為為strokeRect是畫框框的fillStyle要寫在fillRect之前,可以理解為,先選好顏色再畫圖(就像畫
總結(jié)
以上是生活随笔為你收集整理的java继承调用先后_「继承顺序」JAVA继承顺序 - seo实验室的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 主从一致性_mysql 主从
- 下一篇: linux权限最小化分级,vim可视化L