Что содержит таблица диспетчеризации объекта, когда объект ссылается на объект своего подкласса в java?
Согласно этому ответу в ссылке /questions/34525359/virtualnyij-stol-tablitsa-dispetcherizatsii/34525377#34525377
В некоторых реализациях Sun виртуальной машины Java ссылка на экземпляр класса представляет собой указатель на дескриптор, который сам является парой указателей: один на таблицу, содержащую методы объекта, и указатель на объект Class, который представляет тип объекта, а другой - память, выделенная из кучи для данных объекта.
Итак, даны два класса A и B следующим образом:
class A{
void m1(){
System.out.println(" from m1 method ");
}
}
class B extends A {
void m2(){
System.out.println(" from m2 method ");
}
}
В основном методе я делаю объект следующим образом:
A a1 = new A(); // The dispatch table of a1 contains only method m1.
B b1 = new B(); // The dispatch table of b1 contains method m1 and m2.
A a2 = new B(); // What will the dispatch table of a2 be?
Будет ли он иметь только m1 (поскольку ссылка на объект имеет тип A) или будет иметь m1 и m2 (поскольку упомянутый объект имеет тип B)?