1. การเริ่มต้นคลาส
สำหรับการเริ่มต้นคลาส: โดยทั่วไปการเริ่มต้นคลาสจะเริ่มต้นได้เพียงครั้งเดียว และการเริ่มต้นคลาสส่วนใหญ่จะเตรียมใช้งานตัวแปรสมาชิกแบบคงที่
การคอมไพล์คลาสจะกำหนดกระบวนการเริ่มต้นของคลาส
ไฟล์คลาสที่สร้างโดยคอมไพเลอร์ส่วนใหญ่ทำการเปลี่ยนแปลงต่อไปนี้กับคลาสที่กำหนดในไฟล์ต้นฉบับ:
1) ขั้นแรกให้ประกาศตัวแปรสมาชิกภายในคลาสตามลำดับที่กำหนดตัวแปรสมาชิกแบบคงที่
2) เริ่มต้นตามลำดับการเริ่มต้นของตัวแปรสมาชิกในคลาส Java ดั้งเดิม
การแปลงที่สอดคล้องกันระหว่างคลาส Java และคลาสที่คอมไพล์มีดังนี้:
ไฟล์ต้นฉบับ:
คัดลอกรหัสรหัส ดังต่อไปนี้:
บุคคลในชั้นเรียนสาธารณะ{
ชื่อสตริงคงที่สาธารณะ = "จางซาน";
อายุ int คงที่สาธารณะ
คงที่{
อายุ=20;
System.out.println("อายุการเริ่มต้น");
-
ที่อยู่สตริงคงที่สาธารณะ
คงที่{
ที่อยู่ = "ปักกิ่ง";
อายุ=34;
-
โมฆะสาธารณะคงหลัก (สตริง [] args) {
System.out.println (ชื่อ);
System.out.println (อายุ);
System.out.println (ที่อยู่);
-
-
เมื่อซอร์สโค้ด Java ถูกแปลงเป็นไฟล์คลาส มันจะถูกแปลงเป็นโค้ดที่คล้ายกับดังต่อไปนี้:
คัดลอกรหัสรหัส ดังต่อไปนี้:
บุคคลในชั้นเรียนสาธารณะ{
ชื่อสตริงคงที่สาธารณะ
อายุ int คงที่สาธารณะ
ที่อยู่สตริงคงที่สาธารณะ
คงที่{
name="จางซาน";
อายุ=20;
System.out.println("อายุการเริ่มต้น");
ที่อยู่ = "ปักกิ่ง";
อายุ=34;
-
โมฆะสาธารณะคงหลัก (สตริง [] args) {
System.out.println (ชื่อ);
System.out.println (อายุ);
System.out.println (ที่อยู่);
-
-
ลำดับการเริ่มต้นจะดำเนินการตามลำดับตามลำดับการเริ่มต้นของตัวแปรสมาชิกคลาสที่สอดคล้องกันหลังการแปลง ดังนั้นตัวแปรสมาชิกคงที่ทั้งหมดจะถูกประกาศก่อนแล้วจึงกำหนด และลำดับของการกำหนดยังขึ้นอยู่กับลำดับที่ตัวแปรสมาชิกคงที่อยู่ด้วย เริ่มต้นในซอร์สโค้ด หมายเหตุ: การกำหนดตัวแปรสมาชิกและการกำหนดค่าเริ่มต้นโดยตรงจะเทียบเท่ากับการกำหนดค่าเริ่มต้นในบล็อกโค้ดแบบคงที่ ทั้งสองตามลำดับที่กำหนดไว้ในซอร์สโค้ด
2. การสร้างวัตถุ
กระบวนการเริ่มต้นสำหรับการสร้างออบเจ็กต์จะคล้ายกับกระบวนการเริ่มต้นของคลาส แต่จะมีการเพิ่มขั้นตอนตัวสร้าง ซอร์สโค้ดจะเป็นดังนี้:
คัดลอกรหัสรหัส ดังต่อไปนี้:
บุคคลในชั้นเรียนสาธารณะ{
-
name="李思";
อายุ=56;
System.out.println("อายุการเริ่มต้น");
ที่อยู่ = "เซี่ยงไฮ้";
-
ชื่อสตริงสาธารณะ = "จางซาน";
อายุสาธารณะ = 29;
ที่อยู่สตริงสาธารณะ = "ปักกิ่ง";
บุคคลสาธารณะ () {
name="จ้าวหลิว";
อายุ=23;
ที่อยู่ = "เซี่ยงไฮ้";
-
-
หลังจากที่คอมไพลเลอร์แปลงเป็นไฟล์คลาสแล้ว มันจะถูกแปลงเป็นโค้ดที่คล้ายกับดังต่อไปนี้:
คัดลอกรหัสรหัส ดังต่อไปนี้:
บุคคลในชั้นเรียนสาธารณะ{
ชื่อสตริงสาธารณะ
อายุสาธารณะ;
ที่อยู่สตริงสาธารณะ
บุคคลสาธารณะ () {
name="李思";
อายุ=56;
System.out.println("อายุการเริ่มต้น");
ที่อยู่ = "เซี่ยงไฮ้";
name="จางซาน";
อายุ=29;
ที่อยู่ = "ปักกิ่ง";
name="จ้าวหลิว";
อายุ=23;
ที่อยู่ = "เซี่ยงไฮ้";
-
-
จะเห็นได้ว่าการเริ่มต้นของตัวแปรสมาชิกในคลาสและโค้ดในบล็อกโค้ดทั้งหมดได้ถูกย้ายไปยังตัวสร้างแล้ว และตัวแปรสมาชิกจะถูกเตรียมใช้งานตามลำดับตามลำดับการเริ่มต้นของไฟล์ต้นฉบับ Java ในขณะที่โค้ดใน ตัวสร้างดั้งเดิม มันถูกย้ายไปยังการดำเนินการครั้งสุดท้ายของตัวสร้าง ฉันไม่เคยมีความเข้าใจอย่างลึกซึ้งเกี่ยวกับกระบวนการเริ่มต้นชั้นเรียนมาก่อน ฉันไม่สามารถหาวิธีเริ่มต้นได้ ฉันจำได้เพียงลำดับการเริ่มต้นตามหนังสือเท่านั้น แต่หลังจากนั้นไม่นานฉันก็ลืมมันไป ดังนั้นคราวนี้ฉัน ในที่สุดก็เข้าใจแล้ว เป็นการดีกว่าที่จะอธิบายกลไกการเริ่มต้นตามแบบจำลอง ไม่จำเป็นต้องจดจำอีกต่อไป หากคุณเข้าใจ คุณก็จะไม่ลืมมัน