trait Rectangular{
def topLeft:Point
def bottomRight:Point
def left=topLeft.x
def right=bottomRight.x
def width=right-left
//andmanymoregeometricmethods...
}
class Rectangle(val topLeft:Point,val bottomRight:Point)
extends Rectangular{
//othermethods...
}
彼はRectangularで抽象関数を定義し、プライマリコンストラクターのvalを使用してRectangleクラスに実装します。
これは特性の特殊なケースですか?これは予想される動作ですか?
以前、彼はdefだけがdefをオーバーライドできると説明しました。しかし、この場合、valは抽象関数を実装します。これは本当に奇妙なことです。