class Vehicle {
public int wheels;
public int lights;
}
class Car extends Vehicle {
public int wheels =4;
public int lights =2;
public void lights_on(int lights) {
//Code to onlights
}
}
class BMWCar extends Car {
public int wheels = 4;
public int lights = 4;
}
public class TestCar {
public static void main(String args[]) {
//Creating a new instance of BMWCAR by calling the default
// constructor provided by the constructor
bmwCar = new BMWCAR();
bmwCar.lights_on();
}
}
在上面的例子中,当我运行TestCar.java
文件时,JVM的类加载器将TestCar
文件加载到方法区域,并执行main方法。当创建一个bmwCar
实例时,它会调用BMWCar
类的默认构造函数,并执行超级构造函数,即Car
类的默认构造函数。我想知道为什么当调用bmwCar.lights_on();
方法时,JVM寻找lights_on
方法和bmwCar
对象,它会初始化实例变量轮子和灯的值,即4
和4
。JVM如何执行继承树结构?
当在Car
类中执行lights_on();
方法时,JVM是否重新初始化该值?参考文献如何从bmwCar.lights_on
传递到Car
类lights_on
方法?我正在寻找关于工作流程的详细答案。
@Jesper感谢您的回答,我想知道当我重新声明继承结构中的变量时JVM的行为。 JVM如何识别lights_on方法并执行Car类中的方法,父类的引用是否会由编译器本身添加。如果有的话,可以共享一些资源谢谢 – 2009-10-20 12:22:58
我想你想知道什么是什么“多态性”是。从Sun的Java教程中查看一下:http://java.sun.com/docs/books/tutorial/java/IandI/polymorphism。html – Jesper 2009-10-20 13:13:21