Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

ความแตกต่างระหว่างลักษณะและคลาสนามธรรมในสกาลา


ลักษณะนิสัย

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