คลาสนามธรรมและเมธอดนามธรรม
กำหนดสิ่งที่คลาสย่อยต้องนำไปใช้งาน
คลาสนามธรรมและเมธอดนามธรรม เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- คลาสนามธรรมและเมธอดนามธรรม
- อินเทอร์เฟซโดยนัยและ implements
- พหุรูปผ่านชนิดข้อมูลร่วมกัน
- องค์ประกอบแทนการสืบทอด