Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / динамическая диспетчеризация методов / 7 сообщений из 7, страница 1 из 1
30.03.2014, 18:19
    #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
31.03.2014, 14:58
    #38600933
Leonid Kudryavtsev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамическая диспетчеризация методов
Может я конечно тупой, но вроде работает как надо.

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

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

Вообще-то в обоих случаях сработало позднее связывание -- вызвались методы из наследников.
Так что я бы тоже присоединился к просьбе.
...
Рейтинг: 0 / 0
01.04.2014, 13:06
    #38601805
JongShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамическая диспетчеризация методов
прошу прощения, я в этой области новичок, во 2-ом примере мы ссылке на Parent obj=new Child(); тогда почему же в классе тестер вызвался метод с параметром test(Parent obj)
...
Рейтинг: 0 / 0
02.04.2014, 11:23
    #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
04.04.2014, 03:19
    #38605005
JongShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
динамическая диспетчеризация методов
avp.mk,спасибо!
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / динамическая диспетчеризация методов / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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