Ioa*_* P. 4 java eclipse inheritance overriding
我有这两个类,Dog并且Beagle扩展了Dog.
class Dog {
protected String bark() {return "woof "; }
}
class Beagle extends Dog {
private String bark() { return "arf "; }
}
class Test {
public static void main(String args[]) {
Dog[] dogs = {new Dog(), new Beagle()};
for(Dog d : dogs)
System.out.print(d.bark());
}
}
Run Code Online (Sandbox Code Playgroud)
当我使用任何其他编辑器而不是Eclipse时,上面的代码甚至都没有编译.我收到这个错误:
试图在Beagle类中为bark()方法分配较弱的访问权限.
您还可以在此处查看此行为.
如果我使用Eclipse Indigo(版本:3.7.2),则此代码编译良好,输出为:woof woof.
请让我明白哪一个是正确的,为什么?
提前致谢!
如果我使用Eclipse,这个代码编译得很好,输出是:woof woof.
我不这么认为,你不能降低树皮的可见度
肯定是
@Override
protected String bark() {
return "arf ";
}
Run Code Online (Sandbox Code Playgroud)
代替
@Override
private String bark() {
return "arf ";
}
Run Code Online (Sandbox Code Playgroud)
在该修改之后,Begle正确地覆盖了bark方法,因此输出必须是:
woof arf
边注:
版本:Neon.3发布(4.6.3)