การโหลดคลาส
ก่อนที่จะพูดคุยเกี่ยวกับการเริ่มต้นในชั้นเรียนให้อธิบายลำดับการโหลดของชั้นเรียน
ต่อไปนี้ถูกตัดตอนมาจาก "การคิดใน Java 4"
เนื่องจากทุกสิ่งในชวาเป็นวัตถุกิจกรรมมากมาย
ปัญหานี้เป็นหนึ่งในตัวอย่างที่ง่ายกว่า ตามที่จะกล่าวถึงในบทถัดไปรหัสสำหรับแต่ละวัตถุมีอยู่ในไฟล์แยกต่างหาก หากไม่จำเป็นต้องใช้รหัสจริงไฟล์นั้นจะไม่ถูกโหลด โดยทั่วไปเราสามารถคิดได้ว่ารหัสจะไม่โหลดจริงเว้นแต่วัตถุของคลาสนั้นจะถูกสร้างขึ้น เนื่องจากมีความคลุมเครือเล็กน้อยในวิธีการคงที่จึงสามารถพิจารณาได้ว่า "รหัสคลาสถูกโหลดเมื่อใช้เป็นครั้งแรก"
ครั้งแรกที่คุณใช้มันก็เป็นจุดเริ่มต้นที่เกิดขึ้น เมื่อโหลดวัตถุคงที่ทั้งหมดและบล็อกรหัสคงที่จะเริ่มต้นในลำดับต้นฉบับของพวกเขา (นั่นคือลำดับที่พวกเขาถูกเขียนในรหัสนิยามคลาส) แน่นอนข้อมูลคงที่จะเริ่มต้นเพียงครั้งเดียว
เพื่อให้ง่ายเมื่อคลาสมีความสัมพันธ์ในการสืบทอดตัวโหลดคลาสจะกำหนดรูปแบบย้อนหลังและโหลดคลาสที่เกี่ยวข้อง
ตัวอย่างเช่น:
Class B ขยายคลาส A เมื่อเราใหม่ b () ตัวโหลดคลาสจะโหลดรหัสของ A โดยอัตโนมัติ
ลำดับการเริ่มต้นของชั้นเรียน
โดยปกติลำดับการเริ่มต้นมีดังนี้:
(วัตถุคงที่และบล็อกรหัสคงที่เริ่มต้นในลำดับของพวกเขา)> ตัวแปรสมาชิก> constructor
รหัสทดสอบ
คลาสสาธารณะ ClassInit { / ** * @title: Main * @description: คลาสการเริ่มต้นการสั่งซื้อการทดสอบ * @param: @param args * @return: void * @throws * / โมฆะคงที่สาธารณะ (สตริง [] args) {// }} คลาส A {static {system.out.println ("บล็อกรหัสคงที่ของ A ... "); } สตริงสาธารณะ S1 = PRTSTRING ("ตัวแปรสมาชิกของ A ... "); สตริงคงที่สาธารณะ S2 = PRTSTRING ("ตัวแปรคงที่ของ A ... "); สาธารณะ A () {System.out.println ("ตัวสร้างของ A ... "); } สตริงคงที่สาธารณะ prtString (สตริง str) {system.out.println (str); คืนค่า null; }} คลาส B ขยาย {สตริงสาธารณะ SS1 = PRTSTRING ("ตัวแปรสมาชิก B ของ B ... "); สตริงคงที่สาธารณะ SS2 = PRTSTRING ("ตัวแปรคงที่ของ B ... "); สาธารณะ b () {system.out.println ("ตัวสร้าง B ของ B ... "); } ส่วนตัวคงที่ a = ใหม่ a (); Static {System.out.println ("บล็อกรหัสคงที่ของ B ... "); } {system.out.println ("บล็อกรหัส ... "); - ผลการทดสอบ
บล็อกรหัสสแตติกของ A ...
ตัวแปรคงที่ของ A ...
ตัวแปรคงที่ของ B ...
ตัวแปรสมาชิกของ ...
ตัวสร้างของ A ...
บล็อกรหัสคงที่ของ B ...
ตัวแปรสมาชิกของ ...
ตัวสร้างของ A ...
ตัวแปรสมาชิกของ B ...
บล็อกรหัส ...
ตัวสร้างของ B ...
สรุป
ข้างต้นเป็นเนื้อหาทั้งหมดของลำดับการเริ่มต้นของคลาสใน Java ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคนที่ใช้ Java