亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

這里我要糾正一下老師的錯誤,在入口類測試父類和子類它們的屬性和方法的執行順序時,其實是按入口類編寫代碼的順序執行的(比如在入口類把調用父類對象放在子類對象的后面),并不是老師說的先執行父類對象,然后再執行子類對象的步驟,這點學員們可以用軟件去驗證一下

正在回答

5 回答

sba,budongbuyaoxiashuo

0 回復 有任何疑惑可以回復我~

再來看一下構造方法的測試

這是父類a

public class a {
?? ?protected int age=10;
?? ?

?? ?
public a(){
?? ?System.out.println("a執行了");
?? ?
}
}

這是子類c

public class c extends a {
?? ?public c(){
?? ??? ?System.out.println("c執行了");
?? ??? ?
?? ?}
?? ?
?? ??? ?
?? ?}

這是入口類d

public class d {
?? ?public static void main(String[] args) {
?? ??? ?
?? ??? ?c b=new c();
?? ??? ?
?? ??? ?System.out.println("c執行了:"+b.age);
?? ??? ?a ab=new a();
?? ??? ?System.out.println("a執行了:"+ab.age);
?? ??? ?
?? ??? ?
?? ?}
?? ?
}

輸出結果:

a執行了
c執行了
c執行了:10
a執行了
a執行了:10


上面的結果是不是這個意思:先執行父類的無參構造方法,接著執行子類的無參構造方法,然后執行子類對象,接著執行父類無參構造方法,最后再執行父類對象

0 回復 有任何疑惑可以回復我~

I don't think you are right.U know the parent class is prior to the son class.

0 回復 有任何疑惑可以回復我~

老師我先給你看一下普通方法的測試(這里我沒測試屬性):

這是父類a

public class a {
?? ?protected int age=10;
?? ?
public void e(){
?? ?System.out.println("a執行了");
?? ?
}
}

這是子類c

public class c extends a {
?? ?public void r(){
?? ??? ?System.out.println("c執行了");
?? ??? ?
?? ?}
?? ?
?? ??? ?
?? ?}

這是入口類d

public class d {
?? ?public static void main(String[] args) {
?? ??? ?
?? ??? ?c b=new c();
?? ??? ?
?? ??? ?System.out.println("c執行了:"+b.age);
?? ??? ?a ab=new a();
?? ??? ?System.out.println("a執行了:"+ab.age);
?? ??? ?
?? ?}
?? ?
}


輸出結果:

c執行了:10
a執行了:10

0 回復 有任何疑惑可以回復我~
#1

a46

你這例子是不對的,println的輸出順序當然是按程序從上往下。你這樣是看不到其內部運行方式的。在創建對象的時候構造方法就執行了。去掉println直接創建個子類對象運行下就好
2014-10-23 回復 有任何疑惑可以回復我~

這位童鞋我不知道你是怎么寫的代碼,你可以在父類中定義一個構造方法在該方法中打印父類中的某個屬性,再在子類中定義個構造方法在該方法中打印子類中的某個屬性,當你在測試類中實例化子父類的時候看看運行順序。

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
Java入門第二季 升級版
  • 參與學習       531144    人
  • 解答問題       6326    個

課程升級!以終為始告別枯燥,在開發和重構中體會Java面向對象編程的奧妙

進入課程
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號