Tag: 多态自动

没有“抽象”的Java中的运行时多态性?

我正在阅读官方的Oracle教程,其中介绍了多态性的概念,以及3个类的类层次结构的示例; 自行车是超类,MountainBike和RoadBike是2个子类。 它显示了2个子类如何重写在Bicycle中声明的方法“printDescription”,通过声明它的不同版本。 最后,在最后,教程提到Java虚拟机(JVM)为每个变量中引用的对象调用适当的方法。 但是,关于多态性的教程没有提到“抽象”类和方法的概念。 除非将Bicycle中的printDescription()声明为“abstract”,否则如何实现运行时多态性? 我的意思是,在这个例子中,基于什么提示,编译器决定在编译时不将方法调用绑定到引用类型,并认为它应该留给JVM在运行时处理? 以下是使用的示例: public class Bicycle { public int cadence; public int gear; public int speed; public Bicycle(int startCadence, int startSpeed, int startGear) { gear = startGear; cadence = startCadence; speed = startSpeed; } public void setCadence(int newValue) { cadence = newValue; } public void setGear(int newValue) { gear = […]