การเรียก super และการเชื่อมคอนสตรักเตอร์
เข้าถึงคลาสแม่ระหว่างการสร้างออบเจ็กต์
การเรียก super และการเชื่อมคอนสตรักเตอร์ เป็นบทเรียน Dart Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Dart Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน
ลำดับการสร้าง
เมื่อสร้างคลาสย่อย ส่วนของคลาสแม่ต้องถูกเตรียมให้เสร็จก่อน Dart รับรองว่า ตัวสร้างของคลาสแม่จะทำงานก่อนที่ส่วนเนื้อหาของคลาสลูกจะเริ่มต้น 🏗️
ทำความรู้จัก super
คีย์เวิร์ด super หมายถึงส่วนของคลาสแม่ในออบเจ็กต์ คุณใช้เพื่อเข้าถึงตัวสร้าง method และฟิลด์ของคลาสแม่จากภายในคลาสลูก
super() โดยปริยาย
หากคุณไม่เขียนอะไร Dart จะเรียกตัวสร้างของคลาสแม่ที่ไม่มีอาร์กิวเมนต์ให้โดยอัตโนมัติ super() ที่มองไม่เห็นนี้จึงทำให้คลาสแม่เริ่มต้นก่อนเสมอ
class Animal { Animal() => print('Animal'); }
class Dog extends Animal { Dog(); }เรียก super อย่างชัดเจน
เมื่อคลาสแม่ต้องการอาร์กิวเมนต์ คุณจะเรียก super(...) ในรายการตัวเริ่มต้นของตัวสร้างหลังเครื่องหมายทวิภาค การเรียกนี้จะส่งค่าต่อขึ้นไปตามลำดับการสืบทอด
class Dog extends Animal {
Dog(String name) : super(name);
}ตำแหน่งของ super
การเรียก super อยู่ใน รายการตัวเริ่มต้น และห้ามอยู่ในส่วนเนื้อหาของตัวสร้าง เมื่อส่วนเนื้อหาเริ่มทำงาน คลาสแม่จะถูกสร้างเสร็จสมบูรณ์แล้ว
Dog(String name, this.breed) : super(name);พารามิเตอร์ super
Dart รุ่นใหม่ให้คุณส่งต่ออาร์กิวเมนต์ไปยังคลาสแม่โดยตรงด้วย super.field ซึ่งช่วยลดโค้ดซ้ำซ้อนในรายการพารามิเตอร์
class Dog extends Animal {
Dog(super.name);
}เรียกใช้ method ของ super
ภายใน method ที่เขียนทับ super.method() จะเรียกใช้เวอร์ชันเดิมของคลาสแม่ คุณจึงต่อยอดพฤติกรรมได้โดยไม่ต้องแทนที่ทั้งหมด
@override
void speak() {
super.speak();
print('extra');
}ส่งต่อขึ้นไปตามลำดับชั้น
เมื่อมีการสืบทอดหลายระดับ ตัวสร้างแต่ละตัวจะเรียกคลาสแม่ของตนเอง สายโซ่นี้จะไปถึงระดับบนสุด แล้วจึงทำงานที่ส่วนเนื้อหาย้อนกลับลงมาจนถึงคลาสของคุณ
ลำดับตัวเริ่มต้น
ลำดับทั้งหมดคือ รายการตัวเริ่มต้นและ super ก่อน จากนั้นส่วนเนื้อหาของคลาสแม่ แล้วจึงส่วนเนื้อหาของคลาสลูก ฟิลด์ต่าง ๆ พร้อมใช้งานแบบ final ก่อนที่ส่วนเนื้อหาใด ๆ จะเริ่มทำงาน
เมื่อคลาสแม่ต้องการอาร์กิวเมนต์
หากคลาสแม่ไม่มีตัวสร้างปริยาย คุณ ต้องเรียก super พร้อมอาร์กิวเมนต์ที่ถูกต้อง หากข้ามขั้นตอนนี้ Dart จะแจ้งข้อผิดพลาดขณะคอมไพล์
เปลี่ยนเส้นทางด้วย this
ภายในคลาสเดียวกัน ตัวสร้างหนึ่งสามารถเรียกตัวสร้างอีกตัวด้วย this(...) นี่คือการเชื่อมโยงระหว่างตัวสร้างพี่น้อง ซึ่งแตกต่างจากการเรียกขึ้นไปยังคลาสแม่ด้วย super
Point.origin() : this(0, 0);ตรวจสอบอย่างรวดเร็ว
ลองนึกดูว่าการเรียกตัวสร้างของคลาสแม่ต้องอยู่ที่ใด
สรุปทบทวน
คุณเรียก super เพื่อทำงานของตัวสร้างและ method ของคลาสแม่ ส่งต่อค่าด้วยพารามิเตอร์ super และเปลี่ยนเส้นทางไปยังตัวสร้างพี่น้องด้วย this 🔗
เรียนรู้ Dart ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 30
- บทเรียน
- 120
คำถามที่พบบ่อย
บทเรียน “การเรียก super และการเชื่อมคอนสตรักเตอร์” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การเรียก super และการเชื่อมคอนสตรักเตอร์” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Dart Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การเรียก super และการเชื่อมคอนสตรักเตอร์”
เข้าถึงคลาสแม่ระหว่างการสร้างออบเจ็กต์ คุณปฏิบัติ Dart Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Dart Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Dart Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน
บทเรียน “การเรียก super และการเชื่อมคอนสตรักเตอร์” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Dart Academy นี้ได้ไหม
ได้ บทเรียน Dart Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- extends และการเขียนทับเมธอด
- การเรียก super และการเชื่อมคอนสตรักเตอร์
- มิกซ์อินด้วยคีย์เวิร์ด with
- ข้อจำกัด on และลำดับมิกซ์อิน