|
0 / 0 / 0
Регистрация: 20.07.2009
Сообщений: 8
|
|
Множественное наследование20.07.2009, 12:21. Показов 3895. Ответов 22
Метки нет (Все метки)
объясните пожалуйста следующее:
есть 2 интерфейса А и Б. есть класс С, наследующий А,Б. предположим, а интерфейсе А описано поле age как final int и тп. оно в результате наследования перейдет к классу С. но ведь изменять его значение невозможно? а как реализовть возможность изменения наследуемых полей в классе потомке? сделаем проще - есть интерфейс Люди (с полем age), от него приобретает методы и прочее некий класс Янки. как сделать так, что б я мог изменять age у Янки?
0
|
|
| 20.07.2009, 12:21 | |
|
Ответы с готовыми решениями:
22
Множественное наследование List, AbstractList, AbstractCollection
|
|
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
|
||||||
| 20.07.2009, 13:00 | ||||||
0
|
||||||
|
0 / 0 / 0
Регистрация: 20.07.2009
Сообщений: 8
|
|
| 20.07.2009, 13:07 [ТС] | |
|
меня интересует множественное наследоавние и вопрос в том, как это реализовать применительно к нему (мн. наследованию).
0
|
|
|
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
|
|
| 20.07.2009, 13:28 | |
|
в яве официально упразднено множественное наследование. все, что вы могли реализовать с помощью него, делайте через интерфейсы. остальное - принципы хорошего ООП дизайна.
0
|
|
|
0 / 0 / 0
Регистрация: 20.07.2009
Сообщений: 8
|
|
| 20.07.2009, 16:28 [ТС] | |
|
знаю, я и прошу помочь реализовать это с помошью интерфейсов.
0
|
|
|
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
|
|
| 20.07.2009, 17:12 | |
|
наверное, я наконец понял, что тебе нужно. для более полной картинки посмотри, скажем, класс javax.servlet.jsp.tagext.TagSupport.
вкратце - в интерфейсе определяешь нужные методы, а также забиваешь мутаторы. переменной в самом интерфейсе нет. делаешь какой-нибудь суппорт класс, его можно сделать абстрактным (чаще всего так и делается), в этом классе инкапсулируешь все переменные. конкретные имплементации классов екстендят этот абстрактный класс и добавляют свою функциональность. примеров таких схем по разным АПИ - десятки. а заголовок вопроса был вообще не про это )
0
|
|
|
0 / 0 / 0
Регистрация: 20.07.2009
Сообщений: 4
|
|
| 20.07.2009, 20:21 | |
|
Евгений, отвечающий тебя злобно пытался запутать, отвечая не по делу
![]() Множественное наследование в Java возможно только от интерфейсов. В описанном случае, вовсе не нужно вставлять дополнительный абстрактный класс, ибо множественно унаследовать от абстрактных классов тоже нельзя. Для указанного случая нужно следующее. В интерфейсе описывать переменные не нужно. Там нужно только задекларировать метод, скажем, getAge(); Затем в классе, имплементирующем интерфейс, завести свойство age и реализовать метод getAge(), который выдает этот age. Можно включить и другие методы для age, но они не будут видны объекту типа интерфейса. Когда будешь иметь объект типа интерфейса (надеюсь, понятно, что это объект, полученный восходящим преобразованием от класса, реализующего интерфейс), то можешь вызвать метод getAge() и получить этот самый возраст. Еще раз - в интерфейсе описываются только константы, переменные - нет.
0
|
|
|
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
|
|
| 20.07.2009, 21:09 | |
|
я теперь и злобный, оказывается
))путать я никого не хотел. а рассказал, как это сделать качественно с точки зрения дизайна, а не решить проблему сейчас и не думать о последствиях. дополняю свой предыдущий пост - все остается в силе. для имитации множественного наследования есть понятия marker interface. а забивать мутаторы в интерфейс - далеко не всегда хорошо. и ваши классы/интерфейсы поднимаются вверх по иерархии. пока подробно рассказывать не буду. просто вспомните о таких веселых интерфейсах - Serializable/Extenalizable. а то, что вы написали выше - это мой пост в упрощенной форме. или слово мутаторы пугает? )короче, будет время (и если меня разозлят), то запостю сюда все. а от себя хочу сказать, что если возникла необходимость множественного наследования, то она решаема. практически нет такого случая в яве, чтобы понадобилось оно, и его нужно было решать именно как спрашивали.
0
|
|
|
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
|
|
| 20.07.2009, 21:13 | |
|
почитал тут всего, что народ запостил. перевернитесь с головы на ноги:
иерархия у автора уходит и расширяется наверх (все дружно вспоминаем ЮМЛ). я же объясняю, как сделать иерархию от одного интерфейса вниз расширяющуюся. в общем, обширнее берите. раз такая проблема возникла, значит там с дизайном не того чего-то. типа смайлик
0
|
|
|
0 / 0 / 0
Регистрация: 20.07.2009
Сообщений: 8
|
|
| 21.07.2009, 11:10 [ТС] | |
|
2VoidNT: спасибо. это именно то, что мне нужно.
0
|
|
|
4 / 4 / 4
Регистрация: 28.08.2008
Сообщений: 611
|
|
| 21.07.2009, 13:06 | |
|
Вот, Дронски, и зачем мы сюда писать пытаемся? Видишь, как все просто: ты про любовь, а тебе про девочек
)
0
|
|
|
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
|
|
| 21.07.2009, 13:15 | |
|
та вот и думаю - проще поучаствовать в книжке какой-нибудь, которую народ купит, потому что _хочет_ знать. в июле одна компания в москве начинает проект такой, приглашали. а тут еще пост питерской компании. действительно, что ли податься?
мож и тебе потом захочется? )трщи! ударим чем-нибудь по чему-нибудь!
0
|
|
|
4 / 4 / 4
Регистрация: 28.08.2008
Сообщений: 611
|
|
| 21.07.2009, 13:25 | |
|
А почему, собсно, нет? Я смотрю, у тебя время есть -- всю Сеть, наверное, прошерстил уже.
) Я так не могу. Но, надеюсь, что время появится в будущем, в обозримом будущем. Вот тогда можно и попробовать. Так что, давай )
0
|
|
|
0 / 0 / 0
Регистрация: 20.07.2009
Сообщений: 4
|
|
| 21.07.2009, 14:59 | |
|
В психологии есть такое понятие: профессиональное искажение. Это типа когда у какого-нибудь профессора интересуются: что такое квантовый скачок? А он в ответ начинает в течение шести часов на доске и на всем остальном разные формулы расписывать и выводить
Тот же случай и здесь, профессор Дронски Не надо забывать принцип KISS ![]() Кстати, насчет целесообразности множественного наследования согласен - подобные конструкции могут быть ошибками проектирования - типа использования наследования, где нужна композиция. Если бы Евгений более подробно рассказал о задаче, могло оказаться, что множественное наследование ему и не нужно. Кстати, а что за проекты? И вообще, нужны ли в Москве специалисты по J2EE?
0
|
|
|
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
|
|
| 21.07.2009, 15:38 | |
|
как вы любите жизни учить, однако. опрадываться я не собираюсь, потому что знаю, что говорю. а по 6 часов тоже не собираюсь рассказывать. какой вопрос, такой ответ - интерпретирую как хочу
![]() а K.I.S.S. - принцип я всегда помню - только когда слишком им злоупотребляют, возникают проблемы у людей, которые дальше работают с вашей системой. Или после нас - хоть потоп? Strike a balance, в общем ![]() >Кстати, а что за проекты? И вообще, нужны ли в Москве специалисты по >J2EE? как хорошо кидануло сначала ругнуть, а потом спрашивать... ну что ж - про питерский пост - смотрим сегодняшний список сообщений, а про специалистов... хорошие специалисты всегда и везде нужны.
0
|
|
|
0 / 0 / 0
Регистрация: 20.07.2009
Сообщений: 4
|
|
| 21.07.2009, 17:44 | |
|
Никто жизни не учит, а если простая шутка воспринимается как 'опускание' - тут я бессилен.
Кстати, а почему не рекомендуешь мутаторы в интерфейсы ставить из-за Serializable?
0
|
|
|
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
|
|
| 21.07.2009, 19:00 | |
|
>Кстати, а почему не рекомендуешь мутаторы в интерфейсы ставить из-за >Serializable?
если в таком виде, то я именно такого не говорил. может запятые-точки где-то пропущены? а если про мутаторы и интерфейсы, то прикинь так, наверное: сегодня ты работаешь с какой-нибудь пенсионной схемой и возраст важен. уже _сегодня вечером_ вдруг обнаружилось, что эти самые пенсионеры должны обрабатываться не как пенсионеры, а как налогоплательщики, и налоговой системе абсолютно неважно, сколько им лет, а интересует только то, что должен уже платить налоги.если нам подсунут Персон с мутаторами возраста - ненужный довесок. в лучшем случае программер будет кидать исключение МетодНотИмлементед. в худшем - не знаю ![]() решение - пусть пенсионная схема принимает _под-интерфейс_ Пенсионер, который екстендит интерфейс Персон. можно и как абстрактный класс (выше писал), но трудно говорить без конкретной системы. налоговики пусть по-своему работают с объектом. и тут еще добавляется МинСтатистики, которым понадобилось посчитать количество пальцев у вас на ногах ну, скажем, количество челов в регионе (не подкапывайтесь к дубликатам тут им уж точно ни та, ни другая схема не подойдет.мораль - над этим всем иметь интерфейс, та хоть ВасяПупкинСамыйКлассныйИнтерфейс тогда минимальный уровень переносимости будет. пусть в этом интерфейсе нифига и не будет (маркер - пример Сериалазабл).думаю, не очень запутал (пока сам еще не запутался ) пример _очень_ абстрактный и выворачивать его можно как хочешь. поэтому конкретными примерами можно сказать, что нифига неправильно. можно и наоборот. в конкретных такие вещи четко можно определить.ЗЫ: а ругаться - самое последнее мое дело - неинтересно в онлайне тут на релибе просто как-то по-другому общаются. ну, дата регистрации вчерашняя, поэтому лично не воспринимаю.всем приятных размышлений
0
|
|
|
0 / 0 / 0
Регистрация: 20.07.2009
Сообщений: 4
|
|
| 21.07.2009, 19:39 | |
|
Все, что ты рассказал, конечно, понятно. Правильная иерархия должна строиться с максимальных абстракций, чтобы иметь наилучшую переносимость. И это действительно нужно взять на вооружение. Мне только не ясно, с чего ты решил, что у Евгения два его интерфейса, от которых он наследует, являются корневыми, а не унаследованы еще от других, более высоких? Вопрос ведь был очень ясно сформулирован. Отвечая на вопрос, ты сразу же ушел в какие-то дебри, которые ему малоинтересны и не относятся к решаемой задаче, вспомнил про какие-то посредники-абстрактные классы, Serializable. Это-то и обидно, сразу чувствуются, что человек знающий, с большим опытом, а внятно объяснить не удосуживаешься.
Кстати, поэтому я и влез. Обычно мне писать сообщения некогда, а тут увидел, что заводят человека в дебри, зарегистрировался и написал. Попутно позволил себе пошутить, потому что мне казалось, что ты человек с юмором и шутки понимаешь. Жаль, что тобой они оказались восприняты как 'опускание' или 'ругань'. P.S. Кстати, есть очень хороший рецепт по теме - от большого количества кофе Java нервы излишне напрягаются, поэтому рекомендуется пить зеленый чай Java - он и тонизирует, и нервы успокаивает
0
|
|
|
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
|
|
| 21.07.2009, 20:08 | |
|
отвечаю я на вопросы как они приходят. и писать иногда есть время - иногда нет. что было у автора кроме того, что он сказал - неизвестно, потому что он не сказал
![]() вопросов много здесь разных задают. и гораздо полезнее научить ловить рыбку, чем кормить ею. ты не представляешь, сколько тут уже поднимались одинаковые вопросы раз. а про чувство юмора не НУНО вскипела справедливость, заходи почаще на форум - вопросов сложных без ответа еще осталось дофига. а говорить, что времени нет писать в форум. я вот, что скажу - у меня в пятницу сдача восьмимесячного проекта - я тоже могу сказать, что занят. но именно участие здесь на форуме и позволяет или закрепить свои знания, или попдравить их.а то, что я мог в сторону увести - бывает (см. 2 абзац этого поста). воооот, значитца...
0
|
|
|
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
|
|
| 21.07.2009, 20:11 | |
|
да - и абстрактные посредники - не какие-то
чем больше копаешь исходники хороших либ, тем чаще они и встречаются.фух, и о чем это мы тут?
0
|
|
| 21.07.2009, 20:11 | |
|
Помогаю со студенческими работами здесь
20
Наследования в java, в том числе множественное
Множественное наследование в С# Множественное наследование Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2.
Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники".
В. . .
|
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии.
. . .
|
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
|
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут.
https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc
Первый документ красиво выглядит, но без схемы.
Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
|
|
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере".
Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
|
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти".
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2.
В качестве источника данных. . .
|
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер
Написал заготовку:
dotnet new console --aot -o UrlHandler
var items = args. Split(":");
var tag = items;
var id = items;
var executable = args;. . .
|
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3.
Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
|