【发布时间】:2020-05-12 08:00:50
【问题描述】:
我发现我们可以在类之前和类名之后使用访问修饰符。比如我有2个类如下
package com.company.package.sub_package
protected class Animal1{
def makeSound(): Unit = println("Bow ow")
}
object Animal1{
def main(args: Array[String])
{
val animal = new Animal2()
animal.makeSound()
}
}
package com.company.package.sub_package
class Animal2 protected{
def makeSound(): Unit = println("Meow")
}
object Animal2{
def main(args: Array[String])
{
val animal = new Animal1()
animal.makeSound()
}
}
这里在 Animal1 的主方法中显示了一个错误,说 Animal2 不能在对象 Animal1 中访问。
如果我扩展 Animal2 类,子类可以访问父类。
我的理解是,如果我们在类名之后写protected,它对同一个包中的类不可用,如果我在类之前正确,它对包中的所有类都可用,只对它的子类可用,这是一个正确的假设吗?访问修饰符位置的确切意义是什么?
【问题讨论】:
标签: scala