1. 程式人生 > >Scala中特質trait與抽象類abstract的區別

Scala中特質trait與抽象類abstract的區別

什麼時候應該使用特質而不是抽象類?

如果你想定義一個類似介面的型別,你可能會在特質和抽象類之間難以取捨。這兩種形式都可以讓你定義一個型別的一些行為,並要求繼承者定義一些其他行為。一些經驗法則:

  • 優先使用特質。一個類擴充套件多個特質是很方便的,但卻只能擴充套件一個抽象類。
  • 如果你需要建構函式引數,使用抽象類。因為抽象類可以定義帶引數的建構函式,而特質不行。例如,你不能說trait t(i: Int) {},引數i是非法的。