【发布时间】:2017-11-16 05:52:23
【问题描述】:
我现在正在学习覆盖,我读到不能覆盖私有方法here
我还读到访问级别不能比超类访问级别here更严格
所以我想知道的是,这是否意味着您只能覆盖公共方法?而且你的新方法也必须公开?
场景
class A {
private void method1(){
....
}
}
class B extends A {
private void method1(){
....
}
}
我是否正确地说这将是一个编译时错误,因为私有方法不能被覆盖?
场景2
class A {
public void method1(){
....
}
}
class B extends A {
private void method1(){
....
}
}
我是否正确地说这也会产生编译时错误,因为B 中的method1() 的访问级别比A 中的method1() 更严格
场景3
class A {
public void method1(){
....
}
}
class B extends A {
public void method1(){
....
}
}
最后一个问题,这是唯一可以覆盖的场景方法吗? (两个访问级别都是公开的)
【问题讨论】:
-
也受保护了......并且它们将具有相同的可见性
-
为什么不在发帖前测试一下?
标签: java inheritance methods overriding