Непонятно, что касается одиночной отправки в Java и множественной отправки.JAVA

Программисты JAVA общаются здесь
Anonymous
Непонятно, что касается одиночной отправки в Java и множественной отправки.

Сообщение Anonymous »

Я прочитал хороший пост
Просто все еще немного запутался в концепции множественной отправки (не в Java) и одиночной отправки (в Java).
Давайте воспользуемся этим примером:

Код: Выделить всё

class A {
m(A a) {
System.out.println(“In A: “ + a.getClass());
}
}
class B extends A {
m(A a) {
System.out.println(“In B.m(A): “ + a.getClass());
}
m(B a) {
System.out.println(“In B.m(B): “ + a.getClass());
}
}

A a = new A();
A b = new B();
B c = new B();

a.m(a);   // Java will call A.m(A); double-dispatch would call A.m(A)
b.m(b);   // Java will call B.m(A); double-dispatch would call B.m(B)
b.m(c);   // Java will call B.m(B); double-dispatch would call B.m(B)
• Правильно ли, что множественная отправка проверяет:
  • динамические типы объекта, вызывающего метод (так же, как это делает Java с одиночной отправкой)
  • динамические типы аргументов, передаваемых методу (поэтому, по-видимому, это не то же самое, что однократная отправка в Java)
• И поэтому разница между Таким образом, одиночная и множественная диспетчеризация - это номер 2 выше, где одиночная диспетчеризация использует статические типы аргументов вместо их динамических типов?
Спасибо за любую информацию.

Вернуться в «JAVA»