This question already has answers here:
Downcasting in Java
                                
                                    (11个答案)
                                
                        
                                5年前关闭。
            
                    
为什么我们不能使用子类引用指向父类对象。

class Abc
{
    public void Message()
    {
        System.out.println("Abc");
    }
}

class pqr extends Abc
{
    public void Message()
    {
        System.out.println("pqr");
    }
}

class test1
{
    public static void main (String [] ars)
    {
        Abc a = new Abc();
        a.Message();
        Abc b = new pqr();
        b.Message();
        pqr c = new pqr();
        c.Message();
        //pqr d =  new Abc();
    }
}


所以我的问题是Abc b = new pqr();是否可能,为什么不pqr d = new Abc();(由于pqr是子类,它将具有父类的所有功能。)

我只想检查是否正在执行d.Message()它将打印出父类方法还是子类方法。

谢谢

最佳答案

很简单,每只狼都是动物,但并非每只动物都是狼。

因此Abc b = new pqr()有效,但pqr d = new Abc()无效。

09-13 10:24