powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / динамическая диспетчеризация методов
7 сообщений из 7, страница 1 из 1
динамическая диспетчеризация методов
    #38600249
JongShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
public class Test {
public static void main(String[] s) {
A a = new B();
a.b();
}
}

class A {
void a() {
System.out.println("A-a");
}

void b() {
System.out.println("A-b");
a();
}
}

class B extends A {
void a() {
System.out.println("B-a");
}

void b() {
System.out.println("B-b");
super.b();
}
}
ответ таков:
B-b
A-b
B-a

а вот тут:
public class LinkageTest{

public static class Parent{

public void test(){
System.out.println("parent::test");
}
}

public static class Child extends Parent{

public void test(){
System.out.println("child::test");
}
}

public static class Tester{

public void test(Parent obj){
System.out.println("Testing parent...");
obj.test();
}

public void test(Child obj){
System.out.println("Testing child...");
obj.test();
}
}

public static void main(String[] args){
Parent obj = new Child();
Tester t = new Tester();
t.test(obj);
}
}

ответ таков
Testing parent...
child::test

почему сработало раннее связывание, хотя в предыдущем примере компилятор сразу понял что ссылке а присвается объект B, прокоментируйте пожалуйста
...
Рейтинг: 0 / 0
динамическая диспетчеризация методов
    #38600933
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может я конечно тупой, но вроде работает как надо.

Что конкретно Вас удивляет? В какой строчке какое связывание? Где что присваивается?

Компилятор ничего не понимай (он тупой программа, он думать и понимать не может), он просто программу по правилам выполняет. Т.ч. связывание (только я не понял где и какое) никаким к боком с никаким присваиванием (с каким?) никак НЕ связано.
...
Рейтинг: 0 / 0
динамическая диспетчеризация методов
    #38601140
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
динамическая диспетчеризация методов
    #38601141
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JongShinпочему сработало раннее связывание, хотя в предыдущем примере компилятор сразу понял что ссылке а присвается объект B, прокоментируйте пожалуйста

Вообще-то в обоих случаях сработало позднее связывание -- вызвались методы из наследников.
Так что я бы тоже присоединился к просьбе.
...
Рейтинг: 0 / 0
динамическая диспетчеризация методов
    #38601805
JongShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
прошу прощения, я в этой области новичок, во 2-ом примере мы ссылке на Parent obj=new Child(); тогда почему же в классе тестер вызвался метод с параметром test(Parent obj)
...
Рейтинг: 0 / 0
динамическая диспетчеризация методов
    #38602763
avp.mk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
JongShinпрошу прощения, я в этой области новичок, во 2-ом примере мы ссылке на Parent obj=new Child(); тогда почему же в классе тестер вызвался метод с параметром test(Parent obj)
avp.mk http://stackoverflow.com/questions/1572322/overloaded-method-selection-based-on-the-parameters-real-type Michael BorgwardtWhen a method is invoked (§15.12), the number of actual arguments (and any explicit type arguments) and the compile-time types of the arguments are used, at compile time, to determine the signature of the method that will be invoked (§15.12.2). If the method that is to be invoked is an instance method, the actual method to be invoked will be determined at run time, using dynamic method lookup (§15.12.4).
...
Рейтинг: 0 / 0
динамическая диспетчеризация методов
    #38605005
JongShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
avp.mk,спасибо!
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / динамическая диспетчеризация методов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]