qq_32086311 2015-11-02 09:32 采纳率: 0%
浏览 2882

关于java中被private修饰的方法默认为final的问题

class Demo{
private void method(){
System.out.println("haha");
}
class Ex extends Demo{
private void method(){
System.out.println("gaga");
}
}
public static void main(String[] args){
Demo b=new Demo();
Demo a=b.new Ex();
a.method();
}


输出结果:haha
内部类覆盖了method()方法而且运行成功了,另外这里为什么没有多态,应该输出的是gaga呀

  • 写回答

2条回答

  • 诸相非相 2015-11-02 11:27
    关注

    简单说,private方法不能被继承,这个在java SE说明书中有描述,不能被继承的就没有了多态的前提条件。这点跟c++不同。
    http://docs.oracle.com/javase/specs/jls/se8/html/jls-8.html#jls-8.2

    评论

报告相同问题?