最近好忙,忙裡偷閒做的題

來源:互聯網
上載者:User

標籤:

分析運行結果,說明原理。(沒有分析結果不得分)

class A {
void fun1() {
System.out.println(fun2());
}
int fun2() {
return 123;
}
}
public class B extends A {
int fun2() {
return 456;
}
public static void main(String args[]) {
B b = new B();
b.fun1();
A a = b;
a.fun1();
}
}
* @author 
*
* 分析: 此題主要是是分析繼承關係中代碼的執行順序,輸出對象為參考型別,多態以及其方法的執行;
* A:從代碼可知,類B、A為繼承關係,B為子類,A為父類;
* B:因此,首先執行子類即B類中的靜態main方法;
* C:執行B b = new B(),對子類內容進行初始化,首先對父類成員變數進行初始化;
* D:執行b.fun1();由於B繼承了A,因此在B中有A的兩個方法在fun1()中,由於直接輸出方法fun2(),則輸出的實際為fun2()的toString方法,
* fun2()的傳回值為123,但是fun2()在子類中被重寫,其傳回值變為456,因此最終輸出為456;
* E:代碼A a = b;即為A a = new B();是父類指向子類的應用,由於有繼承關係,因此為多態;
* F:執行代碼 a.fun1();多態中調用方法,編譯時間使用父類中的方法,而在執行時則使用子類中的方法,因此結果仍為456;
*
* 最終結果:輸出結果為 456
* 456
*

最近好忙,忙裡偷閒做的題

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.