Java 为什么实例变量不调用方法不重写在向上转换中?
我有母类动物和子类狗Java 为什么实例变量不调用方法不重写在向上转换中?,java,polymorphism,runtime,Java,Polymorphism,Runtime,我有母类动物和子类狗 public class Animal { public void bark() { System.out.println("sua"); } } 及 } 班长 public class MainDemo { public static void main(String[] args) { Animal animal = new Dog(); animal.bark(); animal.eat(); } } 为什么实例动物在多态运行时不
public class Animal {
public void bark() {
System.out.println("sua");
}
}
及
}
班长
public class MainDemo {
public static void main(String[] args) {
Animal animal = new Dog();
animal.bark();
animal.eat();
}
}
为什么实例动物在多态运行时不调用方法eat
线程“main”java.lang中出现异常。错误:未解决的编译问题:
类型Animal的方法eat()未定义
基类必须声明由派生类重写的任何方法。它不必实现它们,但必须声明该方法,以便当基类的派生对象调用该方法时,虚拟分派器知道如何将调用路由到正确的位置。 在
Animal
类中,添加以下声明:
abstract void eat();
这种方法强制派生类实现eat
方法。如果不想强制他们使用eat
方法,请提供一个空实现:
public void eat() { }
abstract void eat();
public void eat() { }