我有伴随对象的代码并将构造函数定义为私有:
class Person private[Person] (var age: Int, var name: String) {
private[Person] def this(name: String) = this(0, name)
}
private class Employee(age: Int, name: String) extends Person(age, name)
private class Worker(age: Int, name: String) extends Person(age, name)
object Person {
def prettyPrint(p: Person) = println("name:%s age:%s".format(p.name, p.age))
def apply(age: Int, name: String) = new Person(age, name)
def apply() = new Person(0, "undefined")
def apply(age: Int, name: String, personType: String): Person = {
if (personType == "worker") new Worker(age, name)
else if (personType == "employee") new Employee(age, name)
else new Person(age, name)
}
}
我的问题是为什么同一个包中的另一个对象也可以访问这个私有构造函数。我添加了 private[this],因此其他人无法访问它,但同伴也没有。我可以只拥有类和伴随对象的私有属性吗?