ลักษณะนิสัย
ลักษณะจะคล้ายกับอินเทอร์เฟซใน Java และสร้างขึ้นโดยใช้คีย์เวิร์ด trait
บทคัดย่อ
คลาสนามธรรมคล้ายกับคลาสนามธรรมใน Java และสร้างขึ้นโดยใช้คำสำคัญที่เป็นนามธรรม
ตัวอย่าง
ต่อไปนี้เป็นโปรแกรมใน Scala เพื่อแสดงการใช้ Traits และ Abstract Classes
trait SampleTrait {
// Abstract method
def test
// Non-Abstract method
def tutorials() {
println("Traits tutorials")
}
}
abstract class SampleAbstractClass {
// Abstract method
def test
// Non-abstract meythod
def tutorials() {
println("Abstract Class tutorial")
}
}
class Tester extends SampleAbstractClass {
def test() {
println("Welcome to Tutorialspoint")
}
}
class TraitTester extends SampleTrait {
def test() {
println("Welcome to Tutorialspoint")
}
}
object HelloWorld {
// Main method
def main(args: Array[String]) {
var obj = new Tester()
obj.tutorials()
obj.test()
var obj1 = new TraitTester()
obj1.tutorials()
obj1.test()
}
} ผลลัพธ์
Abstract Class tutorial Welcome to Tutorialspoint Traits tutorials Welcome to Tutorialspoint
ต่อไปนี้เป็นข้อแตกต่างที่สำคัญบางประการระหว่าง Traits และ Abstract Classes ใน Scala
| ซีเนียร์ เลขที่ | คีย์ | ลักษณะ | คลาสนามธรรม |
|---|---|---|---|
| 1 | มรดกหลายรายการ | ลักษณะรองรับการสืบทอดหลายรายการ | Abstract Class รองรับการสืบทอดเดียวเท่านั้น |
| 2 | ตัวอย่าง | คุณสามารถเพิ่มคุณลักษณะให้กับอินสแตนซ์ของวัตถุได้ | ไม่สามารถเพิ่มคลาสนามธรรมไปยังอินสแตนซ์ของวัตถุได้ |
| 3 | พารามิเตอร์ตัวสร้าง | ลักษณะไม่สามารถมีพารามิเตอร์ในตัวสร้างได้ | คลาสนามธรรมสามารถมีตัวสร้างพารามิเตอร์ได้ |
| 4 | การทำงานร่วมกัน | คุณลักษณะจะทำงานร่วมกับจาวาได้หากไม่มีการใช้งาน | คลาสนามธรรมสามารถทำงานร่วมกับ java ได้โดยไม่มีข้อจำกัด |
| 5 | ซ้อนได้ | ลักษณะสามารถวางซ้อนกันได้และมีการเชื่อมโยงแบบไดนามิก | คลาสนามธรรมไม่เสถียรและถูกผูกมัดแบบสแตติก |