为什么答案不是:parent's method1(),child's method1() ,想不通?
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(); 
 } 
 } 
------解决方案--------------------因为public void method1()重载了Parent的method1()
------解决方案--------------------Parent p=new Child(); 
 p.method2(); 
 将调用Child继承Parent的method2(); 
 method2()中又调用了method1() 
 Parent的method1()被重写 
 所以将调用Child的method1()
------解决方案--------------------首先,Child继承了Parent的method2(),而且并没有overwrite它, 
 所以子类的method2()和父类的method2()结果应该完全相同 
 无论你的methd2()调用了谁,你创建的引用(reference)是父类还是子类类型,都对结果没有影响   
 以此为前提,则你的程序中 
 (new Parent()).method2()与(new Child()).mehod2()打印结果是完全相同的 
 即Parent 's method2() 
   Parent 's method1()   
 内部机制不懂,所以只能在这个层面上理解呵呵,希望对你有帮助   
------解决方案--------------------从java 虚拟机的内部机制来说,private方法是由invokespecial指令来触发的。而一般方法由invokevirtual指令触发,static方法由invokestatic触发。只有invokevitual是动态绑定的。invokespecial触发的函数在大部分情况下都是静态绑定的,所以,你那个private方法也是被静态绑定的,也就是跟你声明的类型是一致的。 
 鉴定完毕。
------解决方案--------------------楼上的是牛人,鉴定完毕,不过我一句不懂~~~~
------解决方案--------------------同意 bruni(不如你)
------解决方案--------------------首先, 
 Parent p=new Child();是 多态 的一种形式,虽然 new 的是Child的构造方法,但是确是父类Parent的类型,这叫作 "p被 声明 为Parent类型, 引用 Child实例 ".请记住以下原则:   
 1)对于一个引用类型的变量,JAVA编译器按照它声明的类型来处理 
 2)对于一个引用类型的变量,运行JAVA虚拟机按照实际引用的对象来处理   
 在这段程序中,p 本应该调用的是Child类的method2(),但是子类 Child类中没有这个方法,就会发生子类的对象转换为父类类型,在父类Parent类中有method2(),转换成功,如果父类Parent类中没有method2(),转换就会失败.实例方法与实际引用的对象的方法绑定,属于动态绑定,在运行时由JAVA虚拟机动态决定.   
 该程序中很重要的是在父类Parent类method1()是private的,只能在父类中调用,所以父类method2()中的method1()不会被子类调用.   
 输出结果:  Parent 's method2() 
            Parent 's method1()
------解决方案--------------------Tester p=new Child();   
 不明白大家解释这么大堆...还涉及到内部机制层面..模模糊糊的..还不知道解释是不是对的 
 这句很好理解...   
 声明提Tester 类型 ,引用 了child实例   
 这里注意声明了什么类型,就调用该类型的方法...child虽然继承父类.但是父类的私有方法不能被覆盖....所以显示都是父类 
------解决方案--------------------这里我比较同意alhu0470的看法
------解决方案--------------------我对楼主的代码作了一点修改,如下: 
 class Parent{ 
 //此处修改.原private改为public 
 public 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(); 
 } 
 } 
 结果跟我们想象的就相符了,如下: 
 Parent 's method2() 
 child 's method1() 
 所以我觉得这串代码最关键的地方不在于多态性,而在于封装性。即Parent中的method1()为private。private修饰的属性或方法,子类不能继承、不能访问、不能重写。