java中的类转换

Vij*_*mar 1 java casting

在我的代码中有两个类,子类扩展了超类.在子类中,我重写了超类方法.在创建对象的时候,我创建了对子类对象的超类引用,它的工作正常.但是我再次将超类引用转换为完整的超类对象,但它调用子类方法而不是超类方法.我的假设输出是错误的.这是我的代码

public class OverRiding {
    public static void main(String[] args) {
        // TODO Auto-generated method stub

        //Super class reference to sub class Object
        Dog dog = new Animal();
        dog.eat();
        dog.bow();

        //Completely converted into pure Dog class Object
        Dog d = (Dog) dog;
        d.eat();
        d.bow();
    }
}
Run Code Online (Sandbox Code Playgroud)

狗班

class Dog {
    public void eat() {
        System.out.println("Dog eat Biscuits");
    }

    public void bow() {
        System.out.println("Dog bow");
    }
}
Run Code Online (Sandbox Code Playgroud)

类动物

class Animal extends Dog {
    public void eat() {
        System.out.println("Animal eat Food");
    }
}
Run Code Online (Sandbox Code Playgroud)

我的输出是

Animal eat Food
Dog bow
Animal eat Food
Dog bow
Run Code Online (Sandbox Code Playgroud)

The*_*ind 6

你的概念不正确兄弟......

 class Animal extends Dog
Run Code Online (Sandbox Code Playgroud)

动物如何延长狗?.它就像是在说"每只动物都是狗".这是错的......所以,它应该是另一种方式......

这个例子只会让你更加困惑..

Donno为什么没有人提起这件事......