Cay Horstmann 的书《不耐烦的 Scala》中的一个非常简单的练习一直困扰着我。它是关于primary
,auxiliary
和default primary
构造函数的:
ex 5.10: 考虑类
class Employee(val name: String, var salary: Double) {
def this() { this("John Q. Public", 0.0) }
}
重写它以使用显式字段和默认的主构造函数。
我不确定我应该做什么。你们中的一些人可以提出一个解决方案吗?
然而,尝试解决这个练习可能让我意识到一些我以前没有注意到的关于主构造函数和val
字段的事情(如你所见,我不太确定):
如果我说一个val
字段(如上面name
的Employee
类)只能通过primary
构造函数而不是一个来初始化,我是对的auxiliary
吗?在后一种情况下,编译器会将其视为对val
导致错误的字段的重新分配。
起初我认为val
字段大致相当于java中的最终字段,期望在任何构造函数中首次分配它们是合法的,但似乎我错了。
我对可能只是一个疯狂的猜测不太满意,所以如果有人能给我关于这一点的更准确的信息,我将不胜感激。