Rumah >Java >javaTutorial >Mengapa Program Java Ini Menghasilkan 'YYXZ' Daripada 'XZYY'?
Memahami Susunan Permulaan dalam Pembina Java
Apabila membina objek dalam Java, adalah penting untuk memahami susunan permulaan. Soalan ini timbul: "Bolehkah sesiapa menjelaskan output program berikut?"
Kod:
class X { Y b = new Y(); X() { System.out.print("X"); } } class Y { Y() { System.out.print("Y"); } } public class Z extends X { Y y = new Y(); Z() { System.out.print("Z"); } public static void main(String[] args) { new Z(); } }
Output yang dijangkakan ialah "XZYY" di bawah andaian bahawa pembina dimulakan sebelum contoh pembolehubah. Walau bagaimanapun, output sebenarnya adalah "YYXZ." Sisihan ini menyerlahkan kepentingan memahami susunan permulaan sebenar.
Menurut Spesifikasi Mesin Maya Java, susunan permulaan adalah seperti berikut:
Dalam kes ini, statik pembolehubah dan blok tidak terlibat. Panggilan super() berlaku secara tersirat dalam pembina kelas Z, jadi ia tidak kelihatan dalam kod. Oleh itu, susunan pemula ialah:
Ini menerangkan output "YYXZ."
Atas ialah kandungan terperinci Mengapa Program Java Ini Menghasilkan 'YYXZ' Daripada 'XZYY'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!