Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Родитель и наследник, вопрос 
V
    Опции темы
kornata
Дата 5.4.2010, 21:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 25.2.2010

Репутация: нет
Всего: нет



Скажите, может ли экземпляр наследника выполнить какую-то инициализацию в инициализации экземпляра до того, как начнёт исполняться конструктор родителя? в инициализации полей? статических полей?
PM MAIL   Вверх
batigoal
Дата 5.4.2010, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Если в классе есть static-блок (static { ... } ), то он, насколько я понимаю, будет исполнен в момент загрузки класса, то есть ДО создания экземпляра. Ну а конструкторы будут вызываться сначала родительские, а уж потом свой (либо только свой, без родительских - если он переопределен).


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
MaxPayneC
Дата 5.4.2010, 22:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 18.2.2006

Репутация: 5
Всего: 9



Нет. Конструктор потомка всегда сначала вызывает конструктор родителя, явно или неявно.

P. S. Возможно, вам стоит почитать сановский туториал по основам языка Java? Ответы на большинство ваших вопросов в нем легко найти.
PM   Вверх
batigoal
Дата 6.4.2010, 10:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: 24
Всего: 151



Цитата(MaxPayneC @  5.4.2010,  23:00 Найти цитируемый пост)
Нет. Конструктор потомка всегда сначала вызывает конструктор родителя, явно или неявно.


Угу, точно.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
MaxPayneC
Дата 6.4.2010, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 324
Регистрация: 18.2.2006

Репутация: 5
Всего: 9



Уточню - неявно вызывается только конструктор по умолчанию, другие конструкторы суперкласса надо вызывать явно.
PM   Вверх
_Y_
Дата 6.4.2010, 19:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1651
Регистрация: 27.11.2006

Репутация: 5
Всего: 34



Этот принцип в некоторых случаях удается чуть-чуть обойти, задав интересующие операции в скобках, при вызове конструктора родительского класса. Например:
Код

public ChildClass(int a, int b) {
     super(a + b, a > b);
}

Вызывается при этом конструктор родительского класса с целым и булевым параметрами.

Понятное дело, что методы, принадлежащие создаваемому объекту в таком варианте использовать нельзя. Есть и другие ограничения (всего не припомню). Но мне удавалось загнать в эти скобки довольно много.


--------------------
Я вот в этом поучаствовал: http://sbor-nik.appspot.com/kick.jsp?id=sbor5737960678883328 (на правах саморекламы:)
PM MAIL WWW   Вверх
kornata
Дата 25.4.2010, 18:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 25.2.2010

Репутация: нет
Всего: нет



Спасибо!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0433 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.