本文介绍了访问由构造函数在抽象类中创建的字段(Scala)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个实现一个方法的抽象类。
I have an abstract class that implements one method.
如何访问参数 internalValue (set
How can I access the parameter internalValue (set by the abstract class constructor?)
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) } }谢谢。
推荐答案将 internalValue 定义为 val :
abstract class Value(val internalValue: Int)o如果您担心封装(名称为 internalValue 的建议),则可以使用 private val :
or if you are concerned about encapsulation (which the name internalValue suggests) you can use private val:
abstract class Value(private val internalValue: Int)完全不声明任何修改等效于等效(?),类似于 private [this] ,这意味着: 只有该特定实例的 Value 可以访问此私有字段。
Not declaring any modified at all is effectively equivalent (?) similar to private[this] which means: only this particular instance of Value can access this private field.
更多推荐
访问由构造函数在抽象类中创建的字段(Scala)
发布评论