# การใช้งาน Polymorphism ใน OOP Concept บนภาษา Groovy
Polymorphism เป็นหลักการหนึ่งใน Object-Oriented Programming (OOP) ที่อนุญาตให้เราใช้งาน objects ที่ต่างกันผ่าน interface เดียวกันได้ การทำงานนี้ทำให้โค้ดของเรามีความยืดหยุ่น, สามารถขยายได้และง่ายต่อการบำรุงรักษา ในภาษา Groovy ซึ่งเป็นภาษาที่มีการปรับปรุงมาจากภาษา Java นี้เกิดโดยมุ่งเน้นที่การเขียนโค้ดที่กระชับและมีประสิทธิภาพ
ตัวอย่างที่ 1: สร้าง Interface และ Implement ในคลาสต่างๆ
interface Vehicle {
String move()
}
class Car implements Vehicle {
@Override
String move() {
"รถเคลื่อนที่ด้วยล้อ"
}
}
class Boat implements Vehicle {
@Override
String move() {
"เรือเคลื่อนที่ในน้ำ"
}
}
Vehicle car = new Car()
Vehicle boat = new Boat()
println car.move() // รถเคลื่อนที่ด้วยล้อ
println boat.move() // เรือเคลื่อนที่ในน้ำ
ในตัวอย่างนี้, คลาส `Car` และ `Boat` ทำการ implement interface `Vehicle` ทั้งสองคลาสจะต้องทำการ override method `move()` จากนั้นเราสามารถอ้างถึง instance ของทั้งสองคลาสนี้ด้วยประเภทของ `Vehicle` ได้
ตัวอย่างที่ 2: Overriding Method
class Bird {
String fly() {
"นกบินได้"
}
}
class Penguin extends Bird {
@Override
String fly() {
"เพนกวินบินไม่ได้ แต่ว่ายน้ำเก่ง"
}
}
Bird penguin = new Penguin()
println penguin.fly() // เพนกวินบินไม่ได้ แต่ว่ายน้ำเก่ง
ถึงแม้ว่า `Penguin` จะเป็น subclass ของ `Bird` แต่ `Penguin` ได้ override method `fly()` เพื่อแสดงพฤติกรรมที่แตกต่างไปจากคลาสหลัก
ตัวอย่างที่ 3: Dynamic Method Dispatch
class Document {
void printDcoument() {
println "Printing Document"
}
}
class WordDocument extends Document {
void printDcoument() {
println "Word Document"
}
}
class PdfDocument extends Document {
void printDcoument() {
println "PDF Document"
}
}
Document doc = new WordDocument()
doc.printDcoument() // Word Document
doc = new PdfDocument()
doc.printDcoument() // PDF Document
ในตัวอย่างนี้, คลาส `WordDocument` และ `PdfDocument` ได้ override method `printDocument()` จากคลาส `Document`. เมื่อเราเรียก `printDocument()` ผ่านตัวแปรที่ประกาศเป็น `Document`, Groovy จะเรียก method ที่ถูก override ของ instance นั้นๆ ซึ่งนี่เป็นการสาธิต "dynamic method dispatch" ที่เป็นส่วนหนึ่งของ polymorphism.
หนึ่งใน usecase ที่ชัดเจนของ polymorphism คือในการพัฒนาแอพพลิเคชั่นที่มีการจัดการกับหลายรูปแบบของรายงาน โดยที่ๆ่างกายตัดสินใจได้ว่าต้องการแสดงผลหรือพิมพ์รายงานในรูปแบบใด (PDF, Word, หรือ HTML). ด้วย polymorphism, เราสามารถมีคลาสเบสที่กำหนดสเปคของวิธีการจัดแสดงแต่ละรายงาน (เช่น method `printDocument()` ในตัวอย่าง) และให้ไครบาสต่างๆ ช่วยดำเนินการกับข้อมูลที่เจาะจงสำหรับรูปแบบนั้นๆ
การเรียนรู้และเข้าใจหลักการพื้นฐานเช่น polymorphismin OOP เป็นสิ่งสำคัญในการกลายเป็นนักพัฒนาซอฟต์แวร์ที่มีความเชี่ยวชาญ ที่ Expert-Programming-Tutor (EPT), เรามุ่งมั่นที่จะพัฒนาทักษะของคุณผ่านบทเรียนที่ออกแบบมาเพื่อท้าทายและสนับสนุนการเรียนรู้ของคุณในบรรยากาศที่สนุกสนานและสร้างสรรค์.
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: polymorphism oop groovy programming object-oriented_programming interface implementation override subclass dynamic_method_dispatch code_example real-world_usecase software_development expert-programming-tutor ept
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM