1

この特性「Person」とこのクラス「PersonImpl」を考慮すると、次のようになります。

trait Person {

  def name: String
  def surname: String
  def married: Boolean
  def married_=(state: Boolean): Unit

  override def toString(): String = name + " " + surname + " " + married
}

class PersonImpl(override val name: String,
                  override val surname: String,
                  override var married: Boolean) extends Person

REPL (コマンド ラインから scala、ターミナルを開いて scala と入力するだけ) を使用して、トレイトとクラスを作成します。次のメッセージがあります: -defined Trait Person -defined class PersonImpl

次に、コマンド ラインから次のように入力します。

  • val p: Person = new PersonImpl1("マリオ", "ロッシ", false)
  • println(p)
  • p.married=真
  • prinln(p)

私の人物が作成され、mared の var フィールドが false から true に変更されたことがはっきりとわかります。わかった。今、私は別のクラスと別の特性だけで同じプロセスを繰り返しています:

trait Element {

  def x: Int
  def y: Int
  def width: Int
  def height: Int

  def x_:(i:Int):Unit
  def y_:(i:Int):Unit

  override def toString(): String = x + " " + y + " " + width + " " + height

}

class GameElement(override var x: Int,override var y: Int,override val width: Int,override val height: Int) extends Element

コマンドラインにクラスを入力するとすぐに、「変数 x は何もオーバーライドしません」というエラーが発生します。

これはどのように可能ですか?

4

1 に答える 1