คัดลอกรหัสรหัส ดังต่อไปนี้:
คลาสสาธารณะ Test4 {
@ทดสอบ
การทดสอบโมฆะสาธารณะ () {
เด็ก เด็ก = เด็กใหม่();
-
-
ผู้ปกครองชั้นเรียน{
public static String parentStaticField = "ตัวแปรคงที่คลาสพาเรนต์";
public String parentNormalField = "ตัวแปรปกติของคลาสพาเรนต์";
คงที่ {
System.out.println(parentStaticField);
System.out.println("บล็อกคงที่คลาสหลัก");
-
-
System.out.println (พาเรนต์นอร์มอลฟิลด์);
System.out.println("บล็อกสามัญของคลาสพาเรนต์");
-
ผู้ปกครองสาธารณะ () {
System.out.println("ตัวสร้างคลาสหลัก");
-
-
ลูกคลาสขยายผู้ปกครอง {
สตริงคงที่สาธารณะ childStaticField = "ตัวแปรคงที่คลาสย่อย";
สตริงสาธารณะ childNormalField = "ตัวแปรคลาสย่อยปกติ";
คงที่ {
System.out.println(childStaticField);
System.out.println("บล็อกสแตติกคลาสย่อย");
-
-
System.out.println (ฟิลด์เด็กปกติ);
System.out.println("บล็อกคลาสย่อยสามัญ");
-
ลูกสาธารณะ () {
System.out.println("ตัวสร้างคลาสย่อย");
-
-
เอาท์พุท:
คัดลอกรหัสรหัส ดังต่อไปนี้:
ตัวแปรคงที่ของคลาสพาเรนต์
บล็อกคงที่ระดับผู้ปกครอง
ตัวแปรสแตติกคลาสย่อย
บล็อกสแตติกคลาสย่อย
ตัวแปรสามัญของคลาสพาเรนต์
บล็อกปกติของคลาสผู้ปกครอง
ตัวสร้างคลาสผู้ปกครอง
ตัวแปรสามัญของคลาสย่อย
บล็อกคลาสย่อยปกติ
ตัวสร้างคลาสย่อย
กระบวนการดำเนินการ:
1. เมื่อดำเนินการลูกใหม่ ตัวโหลดจะค้นหารหัสของคลาสลูกที่คอมไพล์แล้ว (นั่นคือไฟล์ child.class) ในระหว่างกระบวนการโหลด ตัวโหลดจะสังเกตเห็นว่ามีคลาสพื้นฐาน ดังนั้นโหลดคลาสพื้นฐานอีกครั้ง กระบวนการนี้จะเกิดขึ้นเสมอไม่ว่าคุณจะสร้างวัตถุคลาสฐานหรือไม่ก็ตาม หากคลาสฐานมีคลาสฐานอื่น คลาสฐานที่สองก็จะถูกโหลดเช่นกัน และต่อๆ ไป
2. ดำเนินการการกำหนดค่าเริ่มต้นแบบคงที่ของคลาสฐานราก จากนั้นการกำหนดค่าเริ่มต้นแบบคงที่ของคลาสที่ได้รับถัดไป และอื่นๆ ลำดับนี้มีความสำคัญมาก เนื่องจาก "การเริ่มต้นแบบคงที่" ของคลาสที่ได้รับอาจขึ้นอยู่กับการเริ่มต้นที่ถูกต้องของสมาชิกคลาสพื้นฐาน
3. เมื่อโหลดคลาสที่จำเป็นทั้งหมดแล้ว ให้สร้างอ็อบเจ็กต์คลาสลูก
4. หากคลาสย่อยมีคลาสพาเรนต์ คอนสตรัคเตอร์ของคลาสพาเรนต์จะถูกเรียก คุณสามารถใช้ super เพื่อระบุคอนสตรัคเตอร์ที่จะเรียกได้
กระบวนการก่อสร้างและลำดับการก่อสร้างของคลาสพื้นฐานจะเหมือนกับของคลาสที่ได้รับ ขั้นแรก แต่ละตัวแปรในคลาสฐานจะถูกเตรียมใช้งานตามลำดับตัวอักษร จากนั้นส่วนที่เหลือของตัวสร้างของคลาสฐานจะถูกดำเนินการ
5. เตรียมใช้งานข้อมูลสมาชิกคลาสย่อยตามลำดับที่มีการประกาศ และดำเนินการส่วนที่เหลือของตัวสร้างคลาสย่อย