Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Позднее связывание / 8 сообщений из 8, страница 1 из 1
13.10.2011, 21:51:15
    #37481595
jab
jab
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позднее связывание
В общемто вопрос из раздела ООП. Тут есть ньюансы непосредственно как это работает в java.
Хотел бы раз и навсегда прояснить для себя этот вопрос.
Правильно ли я вообще понимаю суть вопроса? Допустим имеется у нас некий класс. У него есть потомки с полиморфными функциями. Функции, которые имеют имя аналогичное имени предка, но с своей реализацией. Далее, в коде программы, мы обращаемся к некоторому обьекту и вызываем функцию. При позднем связывании у нас происходит определение, куда именно идти для выполнения функции, в момент вызова функции, а при раннем связывании ставится указатель на этапе компиляции программы. Это правильно вообще? В документациях пишут мол в этом вся фишка, мол тут главное правильно определить куда надо идти т.к. тип обьекта может быть неизвестен изначально или просто будет не полная информация об обьекте. Как-то не совсем прозрачно для понимания. Как может быть обьект неопределен, если мы его явно инициализируем new и указываем что это будет!? Может на примере каком проясните ситуацию?
...
Рейтинг: 0 / 0
13.10.2011, 21:58:07
    #37481605
pilot911
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позднее связывание
jab,

если объект вызывает метод из класса-предка, а в этом методе есть обращение к элементу позднего связывания (метод или поле), то сначала будет проверено наличие метода или поля у текущего класса объекта и только потом пойдет поиск по классам-предкам
...
Рейтинг: 0 / 0
13.10.2011, 22:42:17
    #37481640
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позднее связывание
В туториале доступно написано:
http://download.oracle.com/javase/tutorial/java/IandI/override.html
И вы примерно правильно поняли.

При чем здесь недоконструированость объекта, я не очень понял.
Но вообще существует ситуация, когда поля инициализированые в месте объявления наблюдаются как null.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
05.08.2013, 12:25:16
    #38354919
Horo37
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позднее связывание
Хочу спросить у опытных специалистов по поводу одного маленького задания, на которое недавно напоролся...что бы много не говорить ... :
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???

Буду признателен за исчерпывающий ответ.
...
Рейтинг: 0 / 0
05.08.2013, 12:30:10
    #38354924
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позднее связывание
Метод a() виртуальный. Поэтому любой его вызов внутри экземпляра B приводит к вызову B.a(). Экземпляра класса А в этом примере нет.
...
Рейтинг: 0 / 0
05.08.2013, 12:30:46
    #38354926
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позднее связывание
Blazkowiczлюбой его вызов внутри экземпляра B
точнее вызов у экземпляра B, а не "внутри"
...
Рейтинг: 0 / 0
05.08.2013, 12:46:13
    #38354958
Horo37
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позднее связывание
спасибо большое!
...
Рейтинг: 0 / 0
05.08.2013, 17:00:53
    #38355470
rema174
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Позднее связывание
прикольно. тоже как-то пропустил этот вопрос.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Позднее связывание / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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