抽象超类是否可以在java中保存对子类的对象的引用?

时间:2014-05-31 11:38:48

标签: java inheritance abstract-class

我创建了一个子类 InheritanceTest ,它扩展了父类 Parent 。父类是一个抽象类,InheritanceTest类重写抽象方法abstractMethod()。当我写,父P =新的InheritanceTest(); ,它工作正常。但是当我写 List<Number> num = new ArrayList<Integer>(); 时,它会给我编译错误,指出&#34;类型不匹配:无法从ArrayList<Integer>转换为ArrayList<Number> &#34;

注意: Number是一个抽象类,由jdk中的Integer类扩展。

请在下面找到我的代码:

import java.util.ArrayList;
import java.util.List;


abstract class Parent {
    public void test() {
      System.out.println("parent version of test called");
    }

    public abstract void abstractMehod();
}

public class InheritanceTest extends Parent{

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
         ArrayList<Number> num = new ArrayList<Integer>();

        Parent parent = new InheritanceTest();

    }

    public void test() {
        System.out.println("child version of test called");
    }

    @Override
    public void abstractMehod() {
        // TODO Auto-generated method stub

    }

}

请解释一下这种行为背后的原因。

0 个答案:

没有答案