[解決済み] 抽象クラスよりtraitを使うことの利点は何ですか?
2023-06-27 01:04:24
質問
どなたかScalaのtraitについて説明していただけませんか?抽象的なクラスを拡張するよりもtraitの方が優れている点は何ですか?
どのように解決するのですか?
簡単に言うと、複数のtraitを使用することができます。また、traitはコンストラクタのパラメータを持つことができません。
traitsがどのように積み重ねられるかを示します。traitsの順序が重要であることに注意してください。右から左へお互いを呼び出すことになります。
class Ball {
def properties(): List[String] = List()
override def toString() = "It's a" +
properties.mkString(" ", ", ", " ") +
"ball"
}
trait Red extends Ball {
override def properties() = super.properties ::: List("red")
}
trait Shiny extends Ball {
override def properties() = super.properties ::: List("shiny")
}
object Balls {
def main(args: Array[String]) {
val myBall = new Ball with Shiny with Red
println(myBall) // It's a shiny, red ball
}
}
関連
-
[解決済み] Scalaのオブジェクトとクラスの違い
-
[解決済み] Scalaのcase classとclassの違いは何ですか?
-
[解決済み] self-typesとtrait subclassの違いは何ですか?
-
[解決済み] Traitの代わりに抽象クラスを使用する利点は何ですか?
-
[解決済み】トレイトとインターフェイスの比較
-
[解決済み] Any、AnyVal、AnyRef、Objectの関係と、Javaコードでのマッピングについて教えてください。
-
[解決済み] 末尾再帰関数が最適化されるためのScalaアノテーションは何ですか?
-
[解決済み] 関数型プログラミング(特にScalaとScala API)におけるreduceとfoldLeft/foldの違いとは?
-
[解決済み] アブストラクトオーバーとはどういう意味ですか?
-
[解決済み] Scalaで関数を定義する3つの方法の違い
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Scalaのパターンマッチはなぜ変数で機能しないのですか?
-
[解決済み] Scala の Case Classes のオーバーロード・コンストラクタ?
-
[解決済み] sbtの依存関係ツリーを見るには?
-
[解決済み] Scalaでサブアレイを取得する正しい方法は何ですか?
-
[解決済み] パッケージオブジェクト
-
[解決済み] Scalaを使用したJoda Timeのクラスブロークンエラー
-
[解決済み] コレクションのGroovyマップメソッド
-
[解決済み] Scalaで使える数学・統計のライブラリはありますか?[クローズド]
-
[解決済み] 複数の先物を待つには?
-
[解決済み] Map操作におけるタプルのアンパッキング