Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
 
iKapex
3 / 3 / 1
Регистрация: 07.10.2012
Сообщений: 228
#1

Это, наверное, полиморфизм - Java SE

05.06.2013, 17:00. Просмотров 713. Ответов 13
Метки нет (Все метки)

Народ, объясните, пожалуйста, что за штука такая когда ссылочная переменная родительского типа, а создаваемый объект дочерний.

Ну, допустим родительский класс Notebook, а дочерний MackBookAir:
Notebook ref = new MackBookAir ();
Я ваще не врублюсь зачем такое надо. Как я могу вызвать методы класса Notebook?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.06.2013, 17:00
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Это, наверное, полиморфизм (Java SE):

Полиморфизм
привет, подскажите, везде в книгах пишут: - дочерний класс может вызывать...

Полиморфизм
Здравствуйте! Если я хочу создать полиморфический массив, допустим: Animal...

Полиморфизм
дана программа class X { int i; public X() { i = 5; this.print();...

Полиморфизм
дана программа class X { int i; public X() { i = 5;...

Полиморфизм
public class Shape { public void draw() { //ничего не делаем } } ...

Полиморфизм и ArrayList
Всем привет, пишу небольшую карточную игру и слегка запутался. У нас есть...

13
Золотце
141 / 104 / 16
Регистрация: 21.04.2011
Сообщений: 402
05.06.2013, 17:24 #2
внатуре полиморфизм.
берешь на и дергаешь методы Notebook
1
Care
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
06.06.2013, 01:22 #3
Например есть 4 класса: Cats Dogs Birds Horses
И все они унаследованы от 1 класса Animals
У animals есть метод run() который унаследовали все 4 подкласса
Прикинем что у нас есть 4 объекта типа:
Cats cat = new Cats();
Dogs dog = new Dogs();
Birds bird = new Birds();
Horses horse = new Horses();

Вопрос как у всех этих объектов вызвать метод run() ?

Добавлено через 29 секунд
При том что Animals ещё и абстрактный...

Добавлено через 1 минуту
И да нельзя создать Объект типа абстрактный класс , но можно создать переменную типа Абстрактный класс
Подумай и думаю поймешь для чего это нужно)

Добавлено через 7 часов 32 минуты
Цитата Сообщение от Золотце Посмотреть сообщение
внатуре полиморфизм.
берешь на и дергаешь методы Notebook
Если метод переопределен в дочернем классе ,то он не как его не вызовет метод родительского класса...
0
tankomaz
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
440 / 439 / 100
Регистрация: 14.10.2012
Сообщений: 1,147
Записей в блоге: 9
06.06.2013, 13:19 #4
Цитата Сообщение от Care Посмотреть сообщение
Если метод переопределен в дочернем классе ,то он не как его не вызовет метод родительского класса...
да лааадно, прям никак. Это вас уже слишком понесло
0
Care
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
06.06.2013, 14:20 #5
Цитата Сообщение от tankomaz Посмотреть сообщение
да лааадно, прям никак. Это вас уже слишком понесло
Notebook ref = new MackBookAir ();
Как тогда вызвать метод read() версии Notebook
у переменной где лежит его дочерний класс и в этом классе этот метод переопределен?

Тоесть как вызвать ref.read(); Что бы вызвался метод read() класса Notebook?

Добавлено через 1 минуту
ЗЫ Нужно вызвать именно у этого объекта ...
ref = new Notebool(); не пойдет....
0
Skipy
1996 / 1419 / 91
Регистрация: 25.11.2010
Сообщений: 3,611
06.06.2013, 15:59 #6
Цитата Сообщение от Care Посмотреть сообщение
Notebook ref = new MackBookAir ();
Как тогда вызвать метод read() версии Notebook
у переменной где лежит его дочерний класс и в этом классе этот метод переопределен?

Тоесть как вызвать ref.read(); Что бы вызвался метод read() класса Notebook?
Никак. Есть ма-а-аленькая вероятность, что это можно сделать через reflection, но и тут сомневаюсь. Ну да, не прокатило.
2
Care
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
06.06.2013, 17:34 #7
Цитата Сообщение от Skipy Посмотреть сообщение
Никак. Есть ма-а-аленькая вероятность, что это можно сделать через reflection, но и тут сомневаюсь. Ну да, не прокатило.
Я о томже....
0
Gibby
06.06.2013, 17:53
  #8

Не по теме:

Это, наверное, полиморфизм
Либо полимофизм, либо волчанка. Одно из двух...

1
iKapex
3 / 3 / 1
Регистрация: 07.10.2012
Сообщений: 228
06.06.2013, 19:41  [ТС] #9
а super здесь ни при чем?
0
Care
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
06.06.2013, 19:48 #10
super только внутри метода и класса....
0
Gibby
152 / 152 / 10
Регистрация: 16.10.2012
Сообщений: 354
Записей в блоге: 1
06.06.2013, 19:49 #11
Ну, можно вот так написать:
Java
1
2
3
4
5
6
7
8
9
10
11
12
@Override
public void read() {
    //Do smth
}
 
public void read(boolean aSuper) { 
    if (aSuper) {
        super.read();
    } else {
        this.read()
    }
}
Но это не совсем то...

PS. А, нет, нельзя ведь. public void read(boolean aSuper) ведь нет у родителя...
0
Care
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
06.06.2013, 19:49 #12
Цитата Сообщение от iKapex Посмотреть сообщение
а super здесь ни при чем?
Так вы поняли зачем это все нужно?)
0
iKapex
3 / 3 / 1
Регистрация: 07.10.2012
Сообщений: 228
06.06.2013, 20:02  [ТС] #13
это по ходу только надо перепреоделять метод в дочернем классе и оттуда уже вызывать super
Всем спасибо за ответы

Добавлено через 34 секунды
Care, ну типа
0
Care
77 / 33 / 9
Регистрация: 04.06.2013
Сообщений: 295
06.06.2013, 20:08 #14
super вызываеться если выхотите не полность изменить метод Род класса , а только дополнить его...
Тоесть вызвать сначала Метод род класса (ключевым словом super) а затем уже код который вы написали )

Так вы поняли как решить эту задачу?) Пока ее не решил , я так и не понимал зачем нужен полиморфизм и интрефесы)



Цитата Сообщение от Care Посмотреть сообщение
Например есть 4 класса: Cats Dogs Birds Horses
И все они унаследованы от 1 класса Animals
У animals есть метод run() который унаследовали все 4 подкласса
Прикинем что у нас есть 4 объекта типа:
Cats cat = new Cats();
Dogs dog = new Dogs();
Birds bird = new Birds();
Horses horse = new Horses();

Вопрос как у всех этих объектов вызвать метод run() ?

Добавлено через 29 секунд
При том что Animals ещё и абстрактный...

Добавлено через 1 минуту
И да нельзя создать Объект типа абстрактный класс , но можно создать переменную типа Абстрактный класс
Подумай и думаю поймешь для чего это нужно)

Добавлено через 7 часов 32 минуты


Если метод переопределен в дочернем классе ,то он не как его не вызовет метод родительского класса...
Добавлено через 45 секунд
+ ещё и наследования ) Благо добрые форумчане открыли мне глаза )
0
06.06.2013, 20:08
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.06.2013, 20:08
Привет! Вот еще темы с решениями:

Коллекции и полиморфизм
Здравствуйте уважаемые форумчане. Мне нужна помощь с одной задачей. Есть...

Потоки + полиморфизм
Привет! Столкнулся с такой задачкой: public class Main { public...

Полиморфизм в Java
Добрый вечер. Изучая полиморфизм в Java натолкнулся на такой пример: class...

Наследование/Полиморфизм
Есть туристическая фирма, которая была основана в Y году, и организует...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru