Dart Academy · บทเรียน

พหุรูปผ่านชนิดข้อมูลร่วมกัน

เขียนโปรแกรมโดยยึดชนิดข้อมูล ไม่ใช่คลาส

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

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

ความหมายของพหุรูปแบบ

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

เขียนโปรแกรมโดยอิงชนิด

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

void render(Shape s) => print(s.area());

ชนิดพื้นฐานที่ใช้ร่วมกัน

เริ่มด้วยชนิดพื้นฐานนามธรรมที่ประกาศเมธอดร่วม ซึ่งชนิดย่อยทุกชนิดจะจัดเตรียมการทำงานในรูปแบบที่แตกต่างกัน

abstract class Shape {
  double area();
}

ชนิดย่อยหลายชนิด รูปแบบเดียวกัน

ชนิดย่อยแต่ละชนิดดำเนินการกับ area ในแบบของตนเอง แต่ทั้งหมดก็ยังถูกปฏิบัติเสมือนเป็น Shape

class Circle extends Shape {
  double area() => 28.3;
}

การเลือกใช้แบบพลวัต

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

Shape s = Circle();
s.area(); // runs Circle.area

รายการของรูปทรงต่างชนิด

เนื่องจากมีชนิดร่วมกัน คุณจึงรวบรวมออบเจ็กต์หลายชนิดไว้ในรายการเดียว และปฏิบัติต่อออบเจ็กต์เหล่านั้นอย่างเป็นแบบเดียวกันได้

List<Shape> shapes = [Circle(), Square()];

วนซ้ำแบบพหุรูปแบบ

การวนซ้ำเพียงครั้งเดียวจัดการรูปทรงทุกชนิดได้ คุณไม่ต้องตรวจสอบคลาสที่เป็นรูปธรรม เพราะ area ที่ถูกต้องจะทำงานเอง

for (var s in shapes) {
  print(s.area());
}

พร้อมต่อยอด

หากเพิ่มชนิดย่อยของ Shape ชนิดใหม่ในภายหลัง การวนซ้ำที่มีอยู่ก็ใช้งานกับชนิดนั้นได้ทันที พหุรูปแบบทำให้โค้ดพร้อมต่อการขยาย

class Triangle extends Shape {
  double area() => 12.0;
}

อินเทอร์เฟซก็ทำงานในลักษณะเดียวกัน

ชนิดที่ใช้ร่วมกันอาจมาจาก implements ได้เช่นกัน คลาสใดก็ตามที่ใช้อินเทอร์เฟซนั้นก็เชื่อมเข้ากับโค้ดชุดเดิมได้โดยตรง

void log(Printable p) => p.printOut();

ไม่จำเป็นต้องตรวจสอบชนิด

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

เหตุใดจึงสำคัญ

พหุรูปแบบช่วยตัดชุดเงื่อนไข if-else ยาว ๆ และคำสั่งสลับซ้ำ ๆ ออกไป คุณเขียนโค้ดที่ยืดหยุ่น ซึ่งปรับเข้ากับชนิดใหม่ได้โดยไม่ต้องแก้ไข 🌱

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

คำถามสั้น ๆ เกี่ยวกับพหุรูปแบบ

สรุปทบทวน

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

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

เรียนรู้ 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 ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “พหุรูปผ่านชนิดข้อมูลร่วมกัน” ใช้เวลานานแค่ไหน

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

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

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

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

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