Dart Academy · บทเรียน

การเรียก super และการเชื่อมคอนสตรักเตอร์

เข้าถึงคลาสแม่ระหว่างการสร้างออบเจ็กต์

บทเรียน 2 จาก 413 ขั้นตอน

การเรียก 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. extends และการเขียนทับเมธอด
  2. การเรียก super และการเชื่อมคอนสตรักเตอร์
  3. มิกซ์อินด้วยคีย์เวิร์ด with
  4. ข้อจำกัด on และลำดับมิกซ์อิน
← กลับไปที่ Dart Academy