1. ホーム
  2. scala

[解決済み] Traitの代わりに抽象クラスを使用する利点は何ですか?

2022-03-25 16:06:08

質問

traitの代わりに抽象クラスを使用する利点は何ですか(パフォーマンスは別として)?抽象クラスはほとんどの場合、traitで置き換えられるような気がするのですが。

どのように解決するのですか?

2つの違いが考えられます

  1. 抽象クラスは、型パラメータだけでなく、コンストラクタ・パラメータも持つことができる。トレイトは型パラメータのみを持つことができます。将来的には、traitもコンストラクタ・パラメータを持つことができるようになるという議論もありました。
  2. 抽象クラスは、Javaと完全に相互運用が可能です。Javaコードからラッパーなしで呼び出すことができます。Traitsは、実装コードを含まない場合にのみ、完全に相互運用が可能です。