構造函數調用構造函數java
❶ java怎麼調用帶參數構造函數
1
如果在子類中調用
,那麼先new
一個參數所在類型的對象a,即
A
a
=
new
A(),然後在子類中用super(a)就可以調用父類的帶類參數構造方法。
2
如果在其他類中調用,那麼也需要先new
一個參數所在類型的對象a,即
A
a=new
A();,然後new調用類的的時候把參數傳進去就可以了,B
b
=
new
B(a)。
❷ java繼承中構造函數的調用順序
首先是在main函數裡面,jvm發現了程序建立了一個Sanwich的對象,於是jvm便會到Sanwich裡面找到構造函數構造一個Sanwich對象。但是jvm發現Sanwich是PortableLunch的子類,所以jvm會要先構造PortableLunch的對象。可是PortableLunch類又是Lunch的子類,所以jvm會要去構造Lunch對象。同理,Lunch又是Meal的子類,因而jvm會要構造Meal的對象。之後jvm會依照Meal、Lunch、PortableLunch、Sanwich的層次結構逐級構造出Sanwich對象,從而列印出Meal()、Lunch()、PortableLunch()、Sanwich()。但是由於Sanwich類中有Bread、Cheese、Letter三個變數,如果你沒有他們實例化的話,那麼程序就此結束;可是你給這三個變數實例化了,因此Sanwich在調用構造函數Sanwich()之後,回過頭來處理這三個實例化了的變數。所以程序又會列印出Bread()、Cheese()、Letter().
❸ java子類構造中怎麼調用父類的構造函數
先小小糾正一下,java裡面一般不叫函數,叫方法,這是Java的一個小習慣。
你這個問題原因很簡單。
首先,任何類都有構造方法,難怕是你不寫,也會默認你有一個有無參構造方法。,所以你的A裡面就會有一個叫A()的構造方法。
當你new A()時,默認你有一個有無參構造方法A()的方法里的第一句,會自動加上一個super();的方法,這句就是調用父類構造方法的意思,這是java規定的規則。
你可以嘗試一下,在A里寫一個構造方法:
A(){
super(); //這個一定要放在第一句
System.out..XX;
}
這與你不寫super()這句效果是一樣的,因如果沒寫,java會默認在第一句加上super。
❹ java構造函數中調用構造函數的問題
不是,因為你初始化(即new)的時候調用的是無參構造函數,所以先調用的是無參構造函數,只不過你在無參構造函數中有調用了有參構造函數(即this(1)),所以當無參構造函數還沒有執行到System.out.println("3
Default!!");時,有參構造函數先執行了System.out.println("3
NotDefault!!");所以在輸出是會出現「3
NotDefault!!」在"3
Default!!"之前的情況.