Динамическая диспетчеризация метода Динамическая диспетчеризация метода - это механизм, с помощью которого вызов переопределенного метода разрешается во время выполнения, а не во время компиляции.Динамическая диспетчеризация метода важна, потому что именно так Java реализует полиморфизм во время выполнения.Ссылочная переменная суперкласса может ссылаться на объект подкласса.Java использует этот факт для разрешения вызовов переопределенных методов во время выполнения.Вот как.Когда переопределенный метод вызывается через ссылку на суперкласс, Java определяет, какую версию этого метода выполнить, основываясь на типе объекта, на который ссылаются во время вызова.Таким образом, это определение выполняется во время выполнения.Когда упоминаются разные типы объектов, будут вызываться разные версии переопределенного метода.Другими словами, именно тип объекта, на который ссылаются (а не тип ссылочной переменной), определяет, какая версия переопределенного метода будет выполнена.Следовательно, если суперкласс содержит метод, который переопределяется подклассом, то при обращении к различным типам объектов через ссылочную переменную суперкласса выполняются разные версии метода.
Пример: класс A
{
int a;
void show()
{
a=10;
System.out.println("a of A : "+a);
}
}
расширяет класс B A
{
int a;
void show()
{
a=20;
System.out.println("a of B : "+a);
}
}
класс Cрасширяет B
{
int a;
void show()
{
a=30;
System.out.println("a of C : "+a);
}
}
класс неоднозначности
{
public static void main(String args[])
{
A oa = new A();
B ob = new B();
C oc = new C();
A r;//r is superclass reference variable
r = oa;
r.show();
r = ob;
r.show();
r = oc;
r.show();
}
}