在抽象类(Scala)中访问由构造函数创建的字段

时间:2012-10-24 07:56:02

标签: scala compiler-errors abstract-class

我有一个实现一个方法的抽象类。

如何访问参数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)
    }
}

谢谢。

1 个答案:

答案 0 :(得分:4)

internalValue定义为val

abstract class Value(val internalValue: Int)

或者如果您担心封装(名称为internalValue建议),您可以使用private val

abstract class Value(private val internalValue: Int)

根本没有声明任何修改实际上等效于(?),类似于private[this],这意味着:只有Value的这个特定实例才能访问此私有字段