父类的method2当然调用父类method1.

解决方案 »

  1.   

    多态要求重写的方法权限一定不能是private的。
    你之后改的两种情况都附合多态了。
      

  2.   

    package asmTest;class Parent
    {
        
        public void method1()
        {
            
            System.out.println("Parent's method1()");
            
        }
        
        public void method2()
        {
            
            System.out.println("Parent's method2()");
            
            method1(); //我把methods1改成public权限,然后这里改成this.methods1
            
        }
        
    }public class Child extends Parent
    {
        
        public void method1()
        {
            
            System.out.println("Child's method1()");
            
        }
        
        public static void main(String args[])
        {
            
            Child p = new Child();
            
            p.method2();
            
        }
        
    }
      

  3.   

       public static void main(String args[])
        {
            
            Parent p = new Child();
            
            p.method2();
            
        }
    刚写错了
      

  4.   

    [Quote=引用楼主 t2xingzhe 的回复:]
    下面是这道题
    Java codeclass Parent{privatevoid method1(){         System.out.println("Parent's method1()");     }publicvoid method2(){         System.out.println("Parent's method2()");         method1();//等于子类使用super关键字
        } }class Childextends Parent{publicvoid method1(){     System.out.println("Child's method1()");     }publicstaticvoid main(String args[]){     Parent p=new Child();     p.method2();     }}
      

  5.   


    那为什么我在父类的methods2方法里面指定this.methods1还是指向了子类的methods1呢
      

  6.   


    你改成this.methods1还是不改,是完全没有区别的。因为本来在成员函数中通过名字访问一个成员,就是隐含的this.成员名的形式。至于为什么会调用的是子类的方法,那正是Java多态性的表现。如果一个基类的名字指向了一个派生类的对象,那么当它调用方法(成员函数)时,总是调用派生类的方法(如果派生类改写了基类的同名方法)。
      

  7.   

    既然已经符合多态了,有this和没有this有区别吗?
    对多态没产生任何影响。
      

  8.   

    因为是在parent中调用的method1,所有会调用父类本身的method1方法,如果是在子类中调用method1,则调用子类的响应方法