如何理解“子类不能降低父类中定义的方法的可访问性”这句话?

问题描述:

如何理解“子类不能降低父类中定义的方法的可访问性”这句话?
如果一个方法在父类定义为public,在子类中必须也定义为public.
如果一个方法在父类定义为public,“在子类中定义为protected”是如何降低父类中定义的方法的可访问性从而不被允许的?麻烦举个例子.
1个回答 分类:数学 2014-11-09

问题解答:

我来补答
父类:FatherClass
public void speak{
//xxx
}
子类:SonClass
private void speak{
//xxx
}
调用:
FatherClass fc = new SonClass();
fc.speak();
由于多态性,fc.speak()实际上调用的是子类的方法,父类不能访问子类方法,肯定会报错
=======可能理解有误
再问: 可不可以这样理解?在FatherClass和SonClass存在继承关系的情况下,SonClass的speak()覆盖了父类的方法,而在SonClass的speak()访问修饰符为private的情况之下,SonClass的子类便继承不了speak(),那么在继承链上从SonClass的子类开始一直往下的类都无法继承speak(),这和继承规则有矛盾,所以,这样不被允许。 可对?有劳指教……
再答: 嗯,可以
 
 
展开全文阅读
剩余:2000
上一页:周五
下一页:责任的事实论据