我设计了一个相当简单的示例来说明我的观点,如下所示:
abstract class AbstractSuperClass {
protected def someFunction(num: Int): Int
def addition(another: AbstractSuperClass,num: Int): Int
}
class SubclassSquare extends AbstractSuperClass {
override protected def someFunction(num: Int): Int = num * num
override def addition(another: AbstractSuperClass,num: Int): Int =
someFunction(num) + another.someFunction(num)
}
我在执行代码后收到以下错误消息。 (当然,main
函数已正确定义。)
错误:(12,33)方法AbstractSuperClass中的类someFunction无法在AbstractSuperClass中访问 不允许访问受保护的方法someFunction,因为 前缀类型AbstractSuperClass不符合 发生访问的子类 someFunction(num)+ another.someFunction(num)
方法addition
引起了问题。该代码尝试访问AbstractSuperClass
实例的保护字段,但是从我的角度来看,由于SubclassSquare
是AbstractSuperClass
的子类,因此在这里应该不会引起问题。
但是,我知道这里一定有我不明白的地方。我想知道如何更改代码以使其编译。受到赞赏。