Dart Academy · บทเรียน

คลาสนามธรรมและเมธอดนามธรรม

กำหนดสิ่งที่คลาสย่อยต้องนำไปใช้งาน

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

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

ความหมายของ abstract

คลาส นามธรรมคือพิมพ์เขียวที่คุณอธิบายได้ แต่ไม่สามารถสร้างขึ้นโดยตรงได้ คลาสนี้มีไว้ให้ขยายต่อ ไม่ได้มีไว้สร้างอินสแตนซ์ด้วยตนเอง

กำหนดให้คลาสเป็นนามธรรม

เพิ่มคีย์เวิร์ด abstract ไว้หน้า คลาส ซึ่งบอก Dart ว่าคลาสนี้ยังไม่สมบูรณ์และมีไว้เป็นฐานที่ใช้ร่วมกัน

abstract class Shape {
  double area();
}

เมธอดนามธรรมไม่มีส่วนเนื้อหา

เมธอดนามธรรมจะประกาศชื่อและลายเซ็น แต่จบด้วยเครื่องหมายอัฒภาค โดยให้คลาสย่อยแต่ละคลาสเป็นผู้กำหนดการทำงานจริง

abstract class Shape {
  double area(); // no body
}

คุณไม่สามารถสร้างอินสแตนซ์ได้

การพยายามเขียน Shape() เป็นข้อผิดพลาดขณะคอมไพล์ Dart ปฏิเสธเพราะคลาสนามธรรมยังไม่เสร็จสมบูรณ์และไม่มีการทำงานจริง

var s = Shape(); // error: abstract

คลาสย่อยเติมส่วนที่ขาด

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

class Circle extends Shape {
  final double r;
  Circle(this.r);
  double area() => 3.14 * r * r;
}

อนุญาตให้มีเมธอดที่ใช้งานได้จริงด้วย

คลาสนามธรรมสามารถมี method ที่ใช้งานได้จริงและเขียนไว้ครบถ้วนได้ คลาสย่อยจะสืบทอด method เหล่านั้นโดยตรง และเติมเฉพาะส่วนที่เป็นนามธรรม

abstract class Shape {
  double area();
  void describe() => print('Area is ' + area().toString());
}

ฟิลด์ในคลาสนามธรรม

คลาสนามธรรมสามารถมี ฟิลด์และตัวสร้างได้เช่นกัน สิ่งเหล่านี้จะทำงานเมื่อสร้างคลาสย่อย ดังนั้นสถานะที่ใช้ร่วมกันจึงอยู่ในคลาสฐาน

abstract class Shape {
  final String name;
  Shape(this.name);
}

คอมไพเลอร์บังคับใช้ข้อตกลง

หากคลาสย่อยลืม method นามธรรม Dart จะแจ้งข้อผิดพลาดก่อนที่คุณจะเรียกใช้โค้ดเสียอีก ระบบจะตรวจสอบ ข้อตกลงให้คุณ

class Square extends Shape {} // error: area() missing

เหตุผลที่ใช้คลาสนามธรรม

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

Getter นามธรรม

สิ่งที่ปล่อยให้เป็นนามธรรมไม่ได้มีแค่ method เท่านั้น getterที่ไม่มีส่วนเนื้อหาก็ทำงานในลักษณะเดียวกัน และต้องให้คลาสย่อยเป็นผู้กำหนด

abstract class Shape {
  String get label;
}

เก็บการอ้างอิงแบบนามธรรม

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

Shape s = Circle(2);
print(s.area());

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

คำถามสั้น ๆ เกี่ยวกับคลาสนามธรรม

สรุปทบทวน

คลาสนามธรรมคือพิมพ์เขียวที่คุณขยายต่อ ไม่ใช่สร้างอินสแตนซ์ เมธอดนามธรรมไม่มีส่วนเนื้อหา และคลาสย่อยที่ใช้งานจริงต้องกำหนดการทำงานให้เมธอดเหล่านั้น ทำได้ดีมาก! 🎯

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

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

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

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

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

บทเรียน “คลาสนามธรรมและเมธอดนามธรรม” ฟรีหรือไม่

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

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

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

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

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

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

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

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

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

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

  1. คลาสนามธรรมและเมธอดนามธรรม
  2. อินเทอร์เฟซโดยนัยและ implements
  3. พหุรูปผ่านชนิดข้อมูลร่วมกัน
  4. องค์ประกอบแทนการสืบทอด
← กลับไปที่ Dart Academy