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();
메서드를 호출 할 때 lights_on
메서드를 찾고 bmwCar
개체에서 인스턴스 변수 바퀴 및 표시 등 값을 초기화하는 이유를 알고 싶습니다. 즉 4
및 4
입니다.JVM은 상속 트리 구조를 어떻게 실행합니까?
lights_on();
메서드를 Car
클래스에서 실행하면 JVM이 값을 다시 초기화합니까? 참조는 bmwCar.lights_on
에서 Car
클래스 lights_on
으로 어떻게 전달됩니까? 워크 플로우에 대한 자세한 답변을 찾고 있습니다.
@Jesper 답변 해 주셔서 감사합니다 , 상속 구조에서 변수를 재 선언 할 때 JVM이 어떻게 작동하는지 알고 싶습니다. JVM은 lights_on 메서드를 식별하고 Car 클래스에있는 메서드를 어떻게 실행합니까? 컴파일러 자체에 의해 부모 클래스의 참조가 추가됩니다. 어떤 리소스가 있으면 공유 할 수 있습니다. 감사합니다. –
알고 싶은 것을 생각합니다. "다형성"이 무엇입니까. Sun의 Java 자습서 (http://java.sun.com/docs/books/tutorial/java/IandI/polymorphism)에서 살펴보십시오.html – Jesper