在我的代码中有两个类,子类扩展超类。在子类中,我重写了超类方法。在创建对象时,我创建了超类对子类对象的引用,它的工作正常。但是,我再次将超类引用转换为完整的超类对象,但它调用子类methodn而不是超类方法。我的假设输出wrong.Here我的代码java中的类铸造
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();
}
}
狗类
class Dog {
public void eat() {
System.out.println("Dog eat Biscuits");
}
public void bow() {
System.out.println("Dog bow");
}
}
类动物
class Animal extends Dog {
public void eat() {
System.out.println("Animal eat Food");
}
}
而且我的输出是
Animal eat Food
Dog bow
Animal eat Food
Dog bow
缩进是你最好的朋友。 – Maroun
'类动物延伸狗'?嗯我想反之亦然 –
动物不应该延长狗,因为每个动物不是狗。它应该是另一种方式:狗应该扩展动物,因为狗*是动物。 –