C++이 상속 (다중, 가상 등)이있는 상태에서 가상 테이블을 관리하는 방법과 객체를 메모리에 배치하는 방법에 대해 많이 배웠습니다.Java 메소드 테이블
이제 Java는 상속의 단 한 줄, 인스턴스 메소드 숨기기 등을 걱정할 필요가 있습니다. 따라서 가상 테이블은이 경우 좀 더 간단해야합니다. 나는 Class
파일이 메소드 영역의 "게이트웨이"역할을한다는 것을 알고 있습니다. 여기서 유형 정의는 메소드 바이트 코드를 포함하여 저장됩니다. 다음 두 가지 질문은 내 마음에 온다 :
- Java에서 vtable/method 테이블 구조가 일반적으로 있습니까? 개체가 저장되고 연결된 개체는
Class
입니까? - 상속/동적 메서드 호출이 어떻게 해결 되었습니까? 내 말은있다 :라고
class A{ int f(){...} } class B extends A{ int f(){...} } A a = new B(); a.f();
F() B에서 : 다음 클래스와 인스턴스 생성을 갖는
. Class
B의 파일을 통해 올바른 메소드 포인터를 해석하고 있습니까?
미리 의견을 보내 주셔서 감사합니다.
예. 나는 런타임에 해상도가 B의'Class' 파일을 사용하고 거기에서 메소드를로드 할 것이라고 생각한다. 그래서 B.f()가 호출되는 것이다. – Bober02