JAVA中
如:Person类继承了Animal类,Animal类是抽象类,Person类中有自己的方法,
在测试类中:Animal p=new Person();为什么此时的p不能调用它自己的方法,而只能调用Animal中的方法,但又为什么打印p的时候打印的是Person的地址,那既然是Person的地址,它为什么不能调用自己的方法呢?

解决方案 »

  1.   

    Animal p=new Person();
    抽象类不能实例化,用具体子类person实例化。定义了一个父类annimal对象,在此由于是父类对象,只能访问父类里面定义的方法,可以利用(Person)p实际调用子类person里面的方法
    当 Person p = new Person();实例化了一person对象,可以直接调用person列的方法。
      

  2.   

    Animal只能调用自身已定义从其父类中继承到的方法,Person中新增的方法它根本不知道,所以就不能调用。继承这块再看看呵呵。
      

  3.   

    Animal p=new Person();
    p就是上转型对象了,它只能调用 子类继承或重写的方法或者 子类继承或隐藏的变量即 上转型对象 不能调用  子类新增的变量 和  新增的方法That's all.