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是可堆疊的,並且是動態繫結的。 | 抽象類不可堆疊,並且是靜態繫結的。 |
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP