class Parent{
private void method1(){
System.out.println("Parent's method1()");
}
public void method2(){
System.out.println("Parent's method2()");
method1();
}
}class Child extends Parent{
public void method1(){
System.out.println("child's method1()");
}
public static void main(String arg[]){
Parent p=new Child();
p.method2();
}
}

解决方案 »

  1.   

    This question has been asked many times.
      

  2.   

    You may read this post as reference.http://community.csdn.net/Expert/TopicView3.asp?id=5510162
      

  3.   

    child()类并没有覆盖parent()类的method2()方法,所以直接使用了parent()类的method2()先输出了Parent's method2()。关键是哪个method1()会被唤起呢?就是当前被实例化的那个类的方法,例如此题子类和父类有同样的方法时,同时Child()类被实例化,当然就调用了Child的那个 method1方法
    所以结果是:
    Parent's method2()
    Parent's method1()