首页 新闻 会员 周边

java继承访问控制问题

0
悬赏园豆:10 [待解决问题]
public class Aa {
//父类中存在一个私有方法test
    private void test() {
        System.out.print("jcb");
    }
}

public class Jicheng extends Aa{
//子类中将test方法重写为public型
    public void test() {
        System.out.print("jcsd");
    }
}

public class Test {
    public static void main(String[] args) {
            Jicheng jc = new Jicheng ();
            //jc实例调用test()失败
            jc.test();//这里是报错的
    }
}

Q1.为何jc无法调用Jicheng类中的test方法? 

Q2.Jicheng类中的test方法是重写了Aa中的test()方法么?如果是,为何没有@Override注解?

smaller_bug的主页 smaller_bug | 初学一级 | 园豆:192
提问于:2015-03-26 19:06
< >
分享
所有回答(3)
1

Private 不能被重写,只能相同级别或低级别的的重写

56180825 | 园豆:1756 (小虾三级) | 2015-03-26 20:24
0

继承不能继承父类中的private类型的成员变量和成员函数,所以“Jicheng” 中并没有继承Aa 的test()方法

蜉蝣于世 | 园豆:202 (菜鸟二级) | 2015-03-27 14:22

Jicheng jc = new Jicheng ();

 jc.test();//这里是报错的

那是什么原因导致Jicheng类的实例jc无法调用test()方法呢?

 

支持(0) 反对(0) smaller_bug | 园豆:192 (初学一级) | 2015-03-27 14:29
0

可以调用的,你的子类并没有重写父类的方法,子类中的test方法与父类中的test并不冲突,因为父类的私有成员是不能被继承的。除非是public 修饰的。

猿哥爱码 | 园豆:258 (菜鸟二级) | 2015-08-27 20:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册