我可以将基类的对象分配给其子类的对象吗?

时间:2014-11-10 04:43:11

标签: java .net

请考虑以下代码:

    public interface Vegetarian{}
    public class Animal{}
    public class Deer extends Animal implements Vegetarian{}
    Deer d = new Deer();
    Animal a = d;

在这个例子中,Animal是一个基类,Deer是一个子类,我正在为Deer类的对象分配一个Animal对象,所以对象'一个'是指Deer的对象(即' d')。我的问题是我可以写反之亦然,如下所示?

    Deer d = a;

1 个答案:

答案 0 :(得分:1)

您可以使用显式强制转换来执行此操作,但如果a未引用实际的Deer,则会抛出ClassCastException。

Deer d = (Deer) a;