黑马程序员技术交流社区

标题: 子类中重写父类方法的方法权限要求是什么呀 [打印本页]

作者: 文涛    时间: 2013-11-3 10:56
标题: 子类中重写父类方法的方法权限要求是什么呀
本帖最后由 文涛 于 2013-11-3 15:02 编辑

有父类如下
class Demo
{
    int show(int a,int b)
    {
        return 0;
    }

}
为什么该父类的子类中不能有方法
private int show(int a,int b){return 0;}
static int show(int a,int b){return 0;}
为什么这两个方法不能有呢,我有点困惑
作者: 咸菜_、And_肉    时间: 2013-11-3 11:14
私有方法对子类是不可见的,不能被重写!
重写静态方法没有多态作用,所以静态方法也不能被重写
作者: 回天之力    时间: 2013-11-3 11:39
如果你要在子类中写上这两个show方法或者随便一个(因为权限没有父类中的权限大,不会是重写父类中的show方法,它只能做为子类中特有方法),
然后子类在继承父类中show方法,这时,子类中就有两个名称为show的方法,当在子类在调用show方法时,jvm不能分辨到底调用的是哪个show方法,所以不可以这样写的。
作者: 高亮亮    时间: 2013-11-3 11:49
本帖最后由 高亮亮 于 2013-11-3 11:59 编辑

这个关于到访问权限修饰符。之前有位哥们问过,我自己搞得都不是太清楚。现在明白一点。

修饰符            同一个类           同一个包              子类(不同的包)         全局范围
public                可见                  可见                         可见                            可见
protected          可见                  可见                         可见                           不可见
无(默认)       可见                   可见                        不可见                       不可见
private              可见                  不可见                      不可见                        不可见

这样应该就清楚了,因为你子类要访问的了父类才能重写,父类不能是private,或者你就继承了但不访问可以。而子类里面,你如果私有的话,你继承下来重写后就不能被外界访问了,那你继承干嘛,没意义了啊?
而static就是,静态函数就是应该理解为你子类里不用继承或者重写就已经加载进内存了……这怎么破?矛盾了。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2