Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 02.12.2015
Сообщений: 24

Наследование. Абстрактные классы

07.12.2015, 19:50. Показов 1072. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пусть у меня есть абстракт класс "Ship" (корабль) и есть не абстрактный класс его расширяющий "Streamship" (пароход) .У меня есть массив кораблей "ourship". Чтобы считывать корабли и заносить в массив "ourship" я сначала спрашиваю "а какой тип корабля пользователь хочет записать". Если он хочет внести в список "ourship" пароход, то создаю объект пароход "a", заполняю поля этого объекта и i элементу списка "ourship" присваиваю объект пароход "a". но получается так что при присвоении ни одно поле этого i-того элемента из списка "ourship" не заполняется.
======================================== ===================================
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public  static Ship[] ourship;//массив с кораблями
......
сначала пользователь вводит сколько кораблей в списке кораблей "ourship"
ourship = new Ship[<количество кораблей>];
.....
if (task==1) //Если пользователь решил ввести в список кораблей объект ПАРОХОД
                            { 
                                System.out.println("заполняется запись i="+i);//уже был увеличен индекс добавляемого элемента списка
                                Steamship a = new Steamship();//создается объект ПАРОХОД
 
                                ....заполняются поля объекта ПАРОХОД......
                                
                                Menu.ourship[i]=a;//ourship это список кораблей, то есть i-ым элементом этого списка является объект унаследовавший от абстрактного класса "Корабль" -то есть объект "Пароход"
                                .....
                                
                            }
======================================== ==================================
почему нельзя было бы так сделать
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
......
сначала пользователь вводит сколько кораблей в списке "ourship"
.....
if (task==1) //Если пользователь решил ввести в список кораблей объект ПАРОХОД
                            { 
                                System.out.println("заполняется запись i="+i);//В коде уже увеличился индекс
                                ourship[i] = new Steamship();//элемент списка есть объект ПАРОХОД
 
                                ....нужно заполнить поля объекта ПАРОХОД......
                                но здесь, когда я хочу обратиться к полям объекта пароход "Steamship" (ourship[rec].<поля объекта>) , java мне выдает лишь поля абстрактного класса КОРАБЛЬ "Ship"
                             
                                .....
                                
                            }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.12.2015, 19:50
Ответы с готовыми решениями:

Абстрактные классы, наследование, полиморфизм и интерфесы
Помогите, пожалуйста, решить задание. Реализовать абстрактные классы или интерфейсы, а также наследование и полиморфизм для следующих...

Реализовать абстрактные классы или интерфейсы, а также наследование и полиморфизм
Реализовать абстрактные классы или интерфейсы, а также наследование и полиморфизм для следующих классов: interface Учебное Заведение...

Реализовать абстрактные классы или интерфейсы, а также наследование и полиморфизм
Реализовать абстрактные классы или интерфейсы, а также наследование и полиморфизм для классов: interface Mobile &lt;- abstract class...

2
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
07.12.2015, 20:22
классы бы еще увидеть
0
 Аватар для ArtTeddy
0 / 0 / 1
Регистрация: 07.12.2015
Сообщений: 1
07.12.2015, 23:24
Ну смотри есть у тебя массив
Java
1
public  static Ship[] ourship = new Ship[<количество кораблей>];
допустим в массив добавили объект new Steamship(), добавится он успешно т.к. является наследником абстрактного класса. Едем дальше.
При попытки получить элемент массива(наш недавно добавленный new Steamship()), мы получим доступ к интерфейсу класса Ship т.к. массив у нас строго типизированный. Поэтому у тебя вот тут и проблема

"но здесь, когда я хочу обратиться к полям объекта пароход "Steamship" (ourship[rec].<поля объекта>) , java мне выдает лишь поля абстрактного класса КОРАБЛЬ "Ship" "

Если хочешь получить доступ к интерфейсу класса Steamship, то тебе надо прикастовать элемент массива к нужному тебе классу, в данном случае Steamship.
Выглядеть это будет примерно так
Java
1
((Steamship)ourship[rec]).getSomeVal();
Надеюсь я тебя правильно понял и помог.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
07.12.2015, 23:24
Помогаю со студенческими работами здесь

Реализовать абстрактные классы или интерфейсы, а также наследование и полиморфизм для классов: interface Mobil
Реализовать абстрактные классы или интерфейсы, а также наследование и полиморфизм для классов: interface Mobile &lt;- abstract class...

Абстрактные классы
Добрый день! Уважаемые коллеги, подскажите новичку. Если класс Cat расширяет (extends) класс Animal у которого есть конструктор...

Абстрактные классы
Прочитал, что невозможно создать экземпляр абстрактного класса, а потом идет пример типа: abstract class Person { /// описание }...

Абстрактные классы
Всем привет! Изучаю абстрактные классы и решаю следующую задачу: Создайте абстрактный класс AbstractHandler. В теле класса создать...

Абстрактные классы
Есть пример из учебника, все вроде правильно вдумчиво набил, но NetBeans выдает ошибку. Вот код: package processor; import...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru