Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么实例变量不调用方法不重写在向上转换中?_Java_Polymorphism_Runtime - Fatal编程技术网

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() { }