Dart Academy · บทเรียน

extends และการเขียนทับเมธอด

ใช้พฤติกรรมของคลาสแม่ร่วมกันและปรับเฉพาะทาง

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

extends และการเขียนทับเมธอด เป็นบทเรียน Dart Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Dart Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน

การใช้พฤติกรรมร่วมกัน

เมื่อคลาสสองคลาสมีพฤติกรรมส่วนใหญ่ร่วมกัน คุณสามารถเขียนเพียงครั้งเดียวแล้วนำกลับมาใช้ใหม่ได้ Dart เรียกแนวคิดนี้ว่าการสืบทอด ซึ่งช่วยให้ไม่ต้องคัดลอกและวางโค้ดซ้ำ 🌱

คีย์เวิร์ด extends

คุณสืบทอดได้โดยเขียน extends หลังชื่อคลาส คลาสใหม่จะเป็นคลาสลูกที่ได้รับฟิลด์และเมธอดของคลาสแม่โดยอัตโนมัติ

class Animal {}
class Dog extends Animal {}

คลาสแม่และคลาสลูก

คลาสที่คุณสืบทอดเรียกว่าคลาสเหนือกว่าหรือคลาสแม่ ส่วนคลาสใหม่เรียกว่าคลาสย่อยหรือคลาสลูก Dog เป็น Animal แต่ไม่ใช่ Animal ทุกตัวจะเป็น Dog

สมาชิกที่สืบทอดมา

คลาสลูกสามารถใช้เมธอดสาธารณะของคลาสแม่ได้ทันทีราวกับเป็นเมธอดของตนเอง คุณเขียนพฤติกรรมที่สืบทอดมาเพียงครั้งเดียว แล้วคลาสย่อยทุกคลาสก็ได้รับประโยชน์

class Animal {
  void breathe() => print('breathing');
}
class Dog extends Animal {}
// Dog().breathe() works

การเขียนทับเมธอด

คลาสย่อยยังสามารถเพิ่มเมธอดของตนเองต่อจากสิ่งที่สืบทอดมาได้ คลาสลูกยังคงเป็น Animal แต่มีความสามารถเพิ่มเติมที่คลาสแม่ไม่มี

class Dog extends Animal {
  void bark() => print('Woof!');
}

การเขียนทับเมธอด

บางครั้งเวอร์ชันของคลาสแม่อาจไม่เหมาะกับคลาสลูก การเขียนทับช่วยให้คลาสย่อยแทนที่ method ที่สืบทอดมาด้วยการทำงานของตนเองได้

class Animal {
  void speak() => print('...');
}
class Cat extends Animal {
  void speak() => print('Meow');
}

ตัวระบุ @override

เพิ่ม annotation @override ไว้เหนือ method ที่ถูกแทนที่ annotation นี้บอกตัววิเคราะห์ให้ตรวจสอบว่าคลาสแม่มี method นั้นอยู่จริง จึงช่วยจับการพิมพ์ผิดได้ตั้งแต่เนิ่น ๆ

class Cat extends Animal {
  @override
  void speak() => print('Meow');
}

ต้องใช้ลายเซ็นเดียวกัน

การเขียนทับต้องคงชื่อเดิมและมี ลายเซ็นที่เข้ากันได้ หากเปลี่ยนพารามิเตอร์หรือชนิดค่าที่ส่งคืนโดยไม่ระวัง Dart จะปฏิเสธ

นำเวอร์ชันของคลาสแม่กลับมาใช้

ภายใน method ที่เขียนทับ คุณยังเรียกใช้เวอร์ชันเดิมผ่าน super ได้ แล้วเพิ่มขั้นตอนของตนเองไว้โดยรอบ วิธีนี้เป็นการต่อยอดพฤติกรรมแทนการทิ้งของเดิมไปทั้งหมด

@override
void speak() {
  super.speak();
  print('and purrs');
}

พหุสัณฐานในการทำงาน

เก็บคลาสลูกไว้ในตัวแปรชนิด Animal แล้วเรียกใช้ speak: แต่ละคลาสจะทำงานด้วยเวอร์ชันของตนเอง นี่คือ พหุสัณฐาน ซึ่งเป็นประโยชน์สำคัญของการเขียนทับ

Animal a = Cat();
a.speak(); // Meow

การสืบทอดเดี่ยว

คลาส Dart สามารถขยายคลาสแม่ได้เพียง หนึ่งคลาสเท่านั้น ไม่ใช่สองคลาส หากต้องการแบ่งปันความสามารถระหว่างลำดับชั้นที่ไม่เกี่ยวข้องกัน ภายหลังคุณจะใช้มิกซินแทน

ตรวจสอบอย่างรวดเร็ว

คุณแทนที่ method ที่สืบทอดมาในคลาสย่อย แล้ว method นั้นทำอะไร

สรุปทบทวน

คุณใช้ extends เพื่อสืบทอดสมาชิกของคลาสแม่ เพิ่ม method ใหม่ และเขียนทับ method อื่นด้วย @override นี่คือหัวใจของการนำคลาสกลับมาใช้ซ้ำ 🎉

เริ่มต้นได้ฟรี

เรียนรู้ Dart ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
30
บทเรียน
120

คำถามที่พบบ่อย

บทเรียน “extends และการเขียนทับเมธอด” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “extends และการเขียนทับเมธอด” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Dart Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Dart Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “extends และการเขียนทับเมธอด”

ใช้พฤติกรรมของคลาสแม่ร่วมกันและปรับเฉพาะทาง คุณปฏิบัติ Dart Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Dart Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Dart Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “extends และการเขียนทับเมธอด” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Dart Academy นี้ได้ไหม

ได้ บทเรียน Dart Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

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