Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для мобильных телефонов > JAVA Micro Edition > Программирование

Программирование Вопросы связанные с программированием в JAVA

Ответ
 
Опции темы
Старый 07.01.2009, 16:44   #1
Serg_Bloim
AnyKey`щик
 
Регистрация: 29.11.2008
Сообщений: 18
Написано одно полезное сообщение
Наследование

Дано:
три класса, один (ClassP) - корневой, два(ClassCh1 и ClassCh2) - наследуемые от первого.
создаю в мидлете массив типа ClassP с элементами классов всех трех обьяленных типов.
ClassP[] Elems = {new ClassP(), new ClassCh1(), new ClassCh2()};
тоесть в массиве типа ClassP создаются также елементы наследуемых классов ClassCh1 и ClassCh2.
Как и предпологалось(даже не знаю, почему я подумал, что это сработает) эта конструкция хорошо живет без сбоев. Без проблем можно обращаться к членам-данным и членам-функциям классов, но только тем, которые обьявлены еще в родительском классе, тоесть в ClassP.
1)Вопрос вот в чем: почему это работает и нет ли тут какой-то незаметной ошибки? Ведь я создаю массив для элементов типа ClassP, а помещаю туда также его наследников, которые, скорее всего, занимают больше памяти.
2)Что происходит если удалить такой масив, точнее если сборщик мусора его удалит, то он не оставит неочищенными куски памяти, которые ушли под новые члены-данные и члены-функции наследуемых классов?
3)Может надо в деструкторе самому удалять свои, невходящие в род.класс обьекты в классе-потомке или это лишнее?
(Offline)
 
Ответить с цитированием
Старый 07.01.2009, 18:57   #2
Piligrim
Оптимист
 
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений
(для 259 пользователей)
Ответ: Наследование

В яве все объекты являются указателями и память выделяется при конструировании, а конструктор знает сколько надо памяти под определенный класс. А при удалении, удаляется весь объект, т.е. здесь безразлично в каком он массиве находится.
А обращаться получится только к тем даным и методам, которые объявлены в родительском классе ведь система думает, что это объекты ClassP
А вот если привести (ClassCh1)Elems[1], то легко обратишься и к новым методам и полям.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Serg_Bloim (07.01.2009)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Виртуальное наследование wolfhound512 C++ 4 26.11.2009 09:38
C++, Наследование, Деструктор wolfhound512 C++ 4 15.11.2008 23:18
А где события, наследование классов контролов? Glex Основной форум 6 24.05.2006 18:55


Часовой пояс GMT +1, время: 20:27.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com