2

1 つのメソッドを実装する抽象クラスがあります。

パラメーターにアクセスするにはどうすればよいinternalValueですか (抽象クラス コンストラクターによって設定されますか?)

abstract class Value(internalValue:Int) {
    def equal( v:Value ): Boolean

    def notEqual( v:Value ): Boolean = {

        //here I get an error on v.internalValue:
        //"value internalValue is not a member of Value"
        (internalValue != v.internalValue)
    }
}

case class Value1(internalValue:Int) extends Value(internalValue){
    def equal( v:Value1 ): Boolean = {
        //this works correctly
        (internalValue == v.internalValue)
    }
}

ありがとうございました。

4

1 に答える 1

4

次のように定義internalValueしますval

abstract class Value(val internalValue: Int)

internalValueまたは、カプセル化(名前が示唆する)が心配な場合は、次を使用できますprivate val

abstract class Value(private val internalValue: Int)

まったく変更を宣言しないことは、実質的に同等 (?)これは、 のこの特定のインスタンスのみが、このプライベート フィールドにアクセスできることprivate[this]意味します。Value

于 2012-10-24T07:58:03.240 に答える