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