Java和CSharp的類繼承的執行過程的差異

來源:互聯網
上載者:User

標籤:csharp   extend   返回   soft   sys   console   system   string   java   

 Java和CSharp的類繼承的執行過程的差異:

Java的執行過程:子類先初始化父類的成員→初始化父類的建構函式→返回子類執行初始化子類的成員→初始化子類建構函式。

CSharp的執行過程:子類先初始化子類的成員→初始化父類的成員→初始化父類的建構函式→初始化子類的建構函式。

假設:A類繼承自B類。

Java的執行過程:A類先初始化B類的成員→初始化B類的建構函式→ 初始化A類的成員→初始化A類的建構函式。

CSharp的執行過程:A類先初始化A類的成員→初始化B類的成員→初始化B類的構函數→初始化A類的建構函式。

依次假設:A類繼承自B類,B類繼承自C類,依次類推下去。

Java的執行過程:A類先初始化C類的成員→初始化C類的建構函式→初始化B類的成員→初始化B類的建構函式→初始化A類的成員→初始化A類的建構函式。

CSharp的執行過程:A類先初始化A類的成員→初始化B類的成員→初始化C類的成員→初始化C類的建構函式→初始化B類的建構函式→初始化A類的建構函式。

 

範例程式碼:

//----------------------Java代碼----------------------

 1 //----------------------Java代碼---------------------- 2 class Demo extends X{ 3     Y y = new Y(); 4     Demo(){System.out.print("Z");} 5     public static void main(String[] args) { 6         new Demo(); 7     } 8 } 9 class X extends J {10     Y y = new Y();11     X() {12         System.out.print("X");13     }14 }15 class Y {16     Y() {17         System.out.print("Y");18     }19 }20 class J{21     K k = new K();22     J(){23         System.out.print("J");24     }25 }26 class K{27     K(){28         System.out.print("K");29     }30 }31 //Java輸出結果為:KJYXYZ

 

//----------------------CSharp代碼----------------------

 1 //----------------------CSharp代碼---------------------- 2 using System; 3  4 class Demo : X 5 { 6     Y y = new Y(); 7  8     public Demo() 9     {10         Console.Write("Z");11     }12 13     static void Main(string[] args) {14         new Demo();15     }16 }17 18 public class X : J19 {20     Y y = new Y();21     public X()22     {23         Console.Write("X");24     }25 }26 27 public class Y28 {29     public Y()30     {31         Console.Write("Y");32     }33 }34 35 public class J36 {37     K k = new K();38     public J()39     {40         Console.Write("J");41     }42 }43 44 public class K45 {46     public K()47     {48         Console.Write("K");49     }50 }51 //CSharp輸出結果為:YYKJXZ

 

Java和CSharp的類繼承的執行過程的差異

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.