สวัสดีครับผู้อ่านทุกท่านที่กำลังมองหาความรู้ด้านการเขียนโปรแกรมแบบ OOP (Object-Oriented Programming) ด้วยภาษา Scala ที่มีเอกลักษณ์และความสามารถในการเขียนโค้ดที่โดดเด่นด้วยแนวคิดของ Inheritance หรือ "การสืบทอด" เราไปค่อยๆ แกะรอยกันครับว่า Inheritance ใน Scala เนี่ยมันใช้งานยังไง พร้อมตัวอย่างโค้ดที่จะทำให้คุณเข้าใจได้ง่ายขึ้น
ในการเขียนโปรแกรมแบบวัตถุจัดการ (OOP) นั้น Inheritance คือแนวคิดหนึ่งที่เอื้อให้เราสามารถสร้างคลาสใหม่จากคลาสที่มีอยู่แล้ว (คลาสพื้นฐานหรือ base class) โดยที่คลาสใหม่นี้ (คลาสที่สืบทอดหรือ derived class/subclass) จะได้รับคุณสมบัติทั้งหมดจากคลาสพื้นฐาน พร้อมทั้งสามารถเพิ่มหรือแก้ไขคุณสมบัติเหล่านั้นได้ตามต้องการ
// คลาสพื้นฐาน
class Vehicle(val brand: String, val model: String) {
def start(): Unit = {
println(s"The $brand $model is starting.")
}
}
// คลาสที่สืบทอด ทำการสืบทอดจาก Vehicle
class Car(brand: String, model: String, val capacity: Int) extends Vehicle(brand, model) {
def carryPassengers(): Unit = {
println(s"The $brand $model can carry $capacity passengers.")
}
}
// สร้าง object จากคลาส Car
val myCar = new Car("Toyota", "Corolla", 5)
// เรียกใช้การกระทำของ myCar
myCar.start() // Output: The Toyota Corolla is starting.
myCar.carryPassengers() // Output: The Toyota Corolla can carry 5 passengers.
class ElectricVehicle(brand: String, model: String, val batteryLife: String) extends Vehicle(brand, model) {
// การสร้างเมธอด Override
override def start(): Unit = {
println(s"The electric $brand $model with $batteryLife battery life is silently starting.")
}
}
val myEV = new ElectricVehicle("Tesla", "Model S", "450 km")
myEV.start() // Output: The electric Tesla Model S with 450 km battery life is silently starting.
คลาสแบบนี้ไม่อนุญาตให้สร้างโดยตรง แต่ให้คลาสอื่นสืบทอด และเติมเต็มรายละเอียดต่อไป
// คลาสแบบ Abstract
abstract class Shape {
def area: Double // เมธอดที่ยังไม่มีการกำหนดตัวเลขหรือวิธีการคำนวณ
}
// คลาสที่สืบทอดจาก Shape และต้องทำการ implement method area
class Circle(radius: Double) extends Shape {
def area: Double = math.Pi * math.pow(radius, 2)
}
val myCircle = new Circle(2.5)
println(f"Area of the circle: ${myCircle.area}%.2f") // Output: Area of the circle: 19.63
การใช้ Inheritance ในโลกจริงนั้นมีเยอะมาก เช่น ในการพัฒนาเกมส์ สามารถมีคลาส character แม่ที่มีคลาสฮีโร่และมอนสเตอร์สืบทอดมาจากนั้น ซึ่งแน่นอนว่ามีเอกลักษณ์และพฤติกรรมที่แตกต่างกันออกไป แต่สามารถใช้คุณสมบัติพื้นฐานเดียวกันที่คลาส character มี เช่น พลังชีวิต หรือ ความสามารถพิเศษ
Inheritance ช่วยให้มั่นใจได้ว่าโค้ดของเราจะมีความสอดคล้องและหลีกเลี่ยงการซ้ำซ้อน และยิ่งไปกว่านั้น Scala ยังมีลักษณะเฉพาะอย่างการใช้ traits ที่เทียบได้กับ interfaces ในภาษาอื่นๆ ช่วยเพิ่มความยืดหยุ่นในการออกแบบโปรแกรมของเราได้อย่างน่าทึ่ง
หากคุณพร้อมที่จะเจาะลึกเกี่ยวกับ Scala และการสืบทอดใน OOP พวกเราที่ EPT, Expert-Programming-Tutor, พร้อมที่จะนำทางคุณไปสู่โลกแห่งการเขียนโปรแกรมที่ไม่มีขีดจำกัด มาร่วมพื้นฐานที่แข็งแรงและขยายขอบเขตความสามารถของคุณไปกับเราที่ EPT ได้เลยครับ!
(หมายเหตุ: โค้ดในตัวอย่างที่ให้มานี้เป็นเพียงส่วนหนึ่งที่จะช่วยให้ผู้อ่านเข้าใจโจทย์การใช้งาน inheritance แต่อย่าลืมว่าโลกของการเขียนโปรแกรมนั้นกว้างใหญ่ และยังมีมิติมากมายที่สามารถสำรวจได้ เรียนรู้โปรแกรมมิ่งกับ EPT ตอนนี้เลย!)
หมายเหตุ: ข้อมูลในบทความนี้อาจจะผิด โปรดตรวจสอบความถูกต้องของบทความอีกครั้งหนึ่ง บทความนี้ไม่สามารถนำไปใช้อ้างอิงใด ๆ ได้ ทาง EPT ไม่ขอยืนยันความถูกต้อง และไม่ขอรับผิดชอบต่อความเสียหายใดที่เกิดจากบทความชุดนี้ทั้งทางทรัพย์สิน ร่างกาย หรือจิตใจของผู้อ่านและผู้เกี่ยวข้อง
Tag ที่น่าสนใจ: inheritance oop scala programming object-oriented_programming class subclass method_override abstract_class traits code_example real-world_usecases
หากมีข้อผิดพลาด/ต้องการพูดคุยเพิ่มเติมเกี่ยวกับบทความนี้ กรุณาแจ้งที่ http://m.me/Expert.Programming.Tutor
085-350-7540 (DTAC)
084-88-00-255 (AIS)
026-111-618
หรือทาง EMAIL: NTPRINTF@GMAIL.COM