再问大家一个问题
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 args[]){
   Parent p=new Child();
   p.method2();//里面的method1()方法为什么是 Parent类中的 而不是Child类中的?
   }
}输出结果为什么是 Parent's method2() 
               Parent's method1() ??? 
知道 Child 类中method1() 方法不是Parent 类中method1() 方法的重写,因为Parent 类中method1() 是private 的 
可还是想不明白? 请问大家应该怎么理解啊?

解决方案 »

  1.   

    里面的method1()方法为什么是 Parent类中的 而不是Child类中的?因为这个是根据引用类型来决定调用超类还是具体类的。
      

  2.   

    因为父类的方法,只可以调用父类的方法。而不像子类可以调用父类的方法一样。private修饰为私有的不可以调用。
      

  3.   

    虽然都有method1 方法,由于父类方法是private,
    因此这两个方法没有任何关系,调用时完全相等于名称不同。
      

  4.   

    知道 Child 类中method1() 方法不是Parent 类中method1() 方法的重写,因为Parent 类中method1() 是private 的  
    可还是想不明白? 请问大家应该怎么理解啊?
    -----------------------------
    有什么不明白啊?这两个类中的方法是构不成方法的重写的,也就是没有关系的;Parent p=new Child();
    p.method2();这里的用到的是:类的向上转型;New Child()类附值给Parent类型;
    这个时候有个特点就是:Parent类中的方法都是可见的,而Child类中在Parent中不存在的方法是不可见的;
    重构的就不用说了;该明白了吧!
      

  5.   

    >>>>>>>>>???????????????????????????????????