![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Syltan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 301 Регистрация: 31.8.2009 Репутация: нет Всего: -2 |
Не могу понять зачем нужно ипользовать ключевое слово super.
Вот пробую что-то писать не выходит. Подскжаите, как правльно допистаь мой код ,чтоб увидеть зачем нужно это ключевое слово.
|
|||
|
||||
| Nofate |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 13.10.2008 Репутация: 4 Всего: 8 |
Super позволяет обращаться к членам родительского класса. Соответственно super() - вызов конструктора родителя.
Это сообщение отредактировал(а) Nofate - 18.5.2010, 19:31 -------------------- The future is not set, there is no fate but what we make for ourselves. Нофейтово пространство и смежные области |
|||
|
||||
| Syltan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 301 Регистрация: 31.8.2009 Репутация: нет Всего: -2 |
super.eat(); вот эта строчка какого именно класса вызовет метод eat()?
Растолкуйте пожалуйста смысл вашего кода. Заранее благодарю. Добавлено через 4 минуты и 39 секунд Скажите почему 1 одинаковый метода 1-ый в классе-родителе ,а второй в классе-потомке? Добавлено через 8 минут и 39 секунд Объявляется в классе-потомке, с таким же именем метод как в классе-родителе,почему? Добавлено через 11 минут и 11 секунд Если можно, напишите с параметрами пример |
|||
|
||||
| Nofate |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 13.10.2008 Репутация: 4 Всего: 8 |
Метод в классе-потомке объявляется таким же как в родителе, с целью переопределить его.
Т.е. для экземпляров класса Apelsin при вызове eat будет выводиться "Апельсин съеден", при вызове eat для экземпляров класса Salo - "Сало съедено". Если же возникает необходимость из дочернего класса вызвать метод родительского класса, который уже переопределен в дочернем - используется ключевое слово super. Можно провести аналогию с ключевым словом this. This - ссылка на сам объект, super - на члены родительского класса для этого объекта. При использовании со скобками super() происходит вызов конструктора из родительского класса. Таким образом, записанная выше программа (разумеется нужно рассовать классы по файлам и добавить нужные импорты) выведет следующее: Апельсин создан - работа конструктора класса Apelsin, вызванного из конструктора класса Salo Еще создано сало - работа конструктора класса Apelsin, вызванного из конструктора класса Salo Сало съедено - работа метода eat класса Salo Сегодня на обед что-то другое. - работа метода eatParent класса Salo Апельсин съеден - работа метода eat класса Apelsin. Метод был вызван из Salo.eatParent() при помощи ключевого слова super Собственно речь идет о самых основах ООП, в частности о наследовании и полиморфизме. Очень важно их усвоить, чтобы двигаться дальше. Рекомендую почитать литературу на эту тему, чтобы четко для себя все разложить по полочкам. -------------------- The future is not set, there is no fate but what we make for ourselves. Нофейтово пространство и смежные области |
|||
|
||||
| Syltan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 301 Регистрация: 31.8.2009 Репутация: нет Всего: -2 |
На чужом примере это хорошо, но хочется на своём. Вот попробовал ещё так ,выводит вообще нули ,чё так, как исправить?
|
|||
|
||||
| jManiak |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 6.2.2007 Где: Санкт-Петербург Репутация: нет Всего: 1 |
У тебя в main нигде не создается и не вызывается объект класса salo. Только апельсин. И чего ты от него хочешь? У него пустой конструктор которому на вход передаются два числа и он с ними ничего не делает, т.е. эти числа даже не записываются в свойства объекта.
Чего хочешь добиться-то? Добавлено через 9 минут и 39 секунд Вот тебе примерчик на твоем:
Здесь при создании потомка вызывается конструктор родителя который присваивает значения 5 и 10, все это выводится в консоль, затем те же свойства задаются локально в конструкторе класса-потомка. И опять же выводим результаты. Чтобы нагляднее это просмотреть предлагаю запустить программу пошагово, при этом повесив a и b в WatchList. Так будет сразу видно когда и что меняется. |
|||
|
||||
| Syltan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 301 Регистрация: 31.8.2009 Репутация: нет Всего: -2 |
Скажите а зачем перед названием класса писать static?
Добавлено через 1 минуту и 45 секунд И ещё вот такое что означает?
|
|||
|
||||
| LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Модератор: Пожалуйста, один топик - один вопрос. И на такие элементарные вопросы есть ответы в любой приличной книге! Потрудись хоть какую нибудь литературу почитать! -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
| Nofate |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 266 Регистрация: 13.10.2008 Репутация: 4 Всего: 8 |
new salo(); - создает экземпляр класса salo. Т.е. вызывает его конструктор и возвращает экземпляр.
PS. Имена классов принято задавать с большой буквы, чтобы не путать с членами и переменными. static перед объявление класса значит что он статический. Для чего такие классы используются можно прочитать здесь, например: http://www.quizful.net/post/inner-classes-java. -------------------- The future is not set, there is no fate but what we make for ourselves. Нофейтово пространство и смежные области |
|||
|
||||
| Syltan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 301 Регистрация: 31.8.2009 Репутация: нет Всего: -2 |
Пробую создать внука, и что-то код перестаёт работать.
Вопрос ещё, метод super он должен постоянно находится внутри констурктора класса-потомка,чтоб вызвать метод или констуртор класса-родителя или необязательно? |
|||
|
||||
| jManiak |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 6.2.2007 Где: Санкт-Петербург Репутация: нет Всего: 1 |
А вот это:
Вообще на каком языке написано??? Предлагаю вам для начала взять ЛЮБУЮ книгу для начинающих по Java и прочитать хотя-бы первые пару глав. |
|||
|
||||
| Syltan |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 301 Регистрация: 31.8.2009 Репутация: нет Всего: -2 |
Ответьте пожалуйста на вопрос, помогите исправить код. Заранее благодарю, я хочу сделать есперимент с внуком.
|
|||
|
||||
| jManiak |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 130 Регистрация: 6.2.2007 Где: Санкт-Петербург Репутация: нет Всего: 1 |
Вы сейчас пытаетесь управлять машиной не зная как крутить руль. Вы его пытаетесь на себя тянуть, а не крутить, и удивляетесь что машина не взлетает.
Потратив 2 часа времени изучая первый главы книги для начинающих вы сэкономите себе кучу времени проведенного на форумах, интересуясь почему же руль не тянется на себя. Серьезно. И так как пошел уже флуд, если что - в ПМ. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |