黑马程序员技术交流社区
标题:
关于重写的一点疑问
[打印本页]
作者:
王健
时间:
2012-8-19 15:30
标题:
关于重写的一点疑问
为什么重写时,子类方法的权限要大于等于父类方法的权限???
作者:
黑马王建伟
时间:
2012-8-19 15:51
这个,我看了下李兴华的java开发实战经典,里面就说“被覆写的方法不能拥有更严格的权限”,但没有讲原理------------
作者:
贾林栋
时间:
2012-8-19 16:05
如果子类权限小于父类的权限,使用多态时,父类就无法调用方法,如下面的代码
class Fu
{
public void method()
{}
}
class Zi extends Fu
{
private void method()
{
System.out.println("a")
}
}
class Demo
{
Fu z=new Zi();
z.method;
}
复制代码
作者:
王舜民
时间:
2012-8-19 16:16
如果父类提供了一个方法,但是子类中限制了这个方法的访问权限,那么这种替换功能就无法实现了.
父类应该在任何情况下替换成子类.但如果你的父类的方法是public,而你在子类重写的时候改成了private,当在别的场合人家用父类引用你的子类的方法的时候,系统应该怎么办呢?(private是不能被访问到的)这样做会给多态性的编程原则带来矛盾.(csdn转)
所以说这是一个规定
子类不能降低父类方法的访问权限,只能大于等于父类中多态方法的访问权限,这是一个规定。
作者:
杨彪
时间:
2012-8-19 17:13
在父类中是public的方法,如果子类中将其降低访问权限为private,那么子类中重写以后的方法对于外部对象就不可访问了,这个就破坏了继承的含义
作者:
孙铭泽
时间:
2012-8-19 18:00
这个问题你可以这么考虑啊。主函数是一间屋子,而你就是子函数要进入这间屋子,权限就是这个屋子的门。
你要是进入这间屋子的话 ,你要是太胖,比门宽 ,你说怎么进去,所以是你只能是比这个门小或
者是一样的白。才能进去访问
作者:
黄阔
时间:
2012-8-19 22:00
改变了就达不到重写了,就达不到多态要的效果了。。没有重写的意义了。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2