Scala中Traits和抽象類的區別。


Traits

Traits類似於Java中的介面,使用`trait`關鍵字建立。

抽象類

抽象類類似於Java中的抽象類,使用`abstract`關鍵字建立。

示例

 線上演示

以下是Scala程式,演示了Traits和抽象類的用法。

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

以下是Scala中Traits和抽象類之間一些重要的區別。

序號關鍵點Trait抽象類
1多重繼承Trait支援多重繼承。抽象類只支援單繼承。
2例項Trait可以新增到物件例項。抽象類不能新增到物件例項。
3建構函式引數Trait的建構函式不能有引數。抽象類可以有引數化建構函式。
4互操作性如果Traits沒有任何實現,則可以與Java互操作。抽象類可以無限制地與Java互操作。
5堆疊性Traits是可堆疊的,並且是動態繫結的。抽象類不可堆疊,並且是靜態繫結的。

更新於:2020年5月16日

1K+ 閱讀量

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.