【发布时间】:2015-10-20 13:03:19
【问题描述】:
在 Java 中扩展类时,我可以提供覆盖更高或相等访问修饰符的方法,但不能提供更低的访问修饰符。以下是不允许的,因为ClassB 中的方法foo 必须是public:
public class ClassA {
public void foo() {}
}
public class ClassB extends ClassA {
@Override
protected void foo() {}
}
这似乎不适用于构造函数。我可以做到以下几点:
public class ClassA {
public ClassA () {}
}
public class ClassB extends ClassA {
protected ClassB() {}
}
为什么会这样?是否还有其他规则也适用于构造函数但不适用于方法?
【问题讨论】:
标签: java inheritance constructor access-modifiers