访问由构造函数在抽象类中创建的字段(Scala) [英] Access a field created by the constructor in an abstract class (Scala)
本文介绍了访问由构造函数在抽象类中创建的字段(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)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文