ลักษณะนิสัย
ลักษณะจะคล้ายกับอินเทอร์เฟซใน 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 | ซ้อนได้ | ลักษณะสามารถวางซ้อนกันได้และมีการเชื่อมโยงแบบไดนามิก | คลาสนามธรรมไม่เสถียรและถูกผูกมัดแบบสแตติก |