|
89 / 1 / 3
Регистрация: 04.07.2013
Сообщений: 282
|
|||||||||||
Через класс B изменить переменную type в классе А07.03.2015, 19:59. Показов 8579. Ответов 22
Метки нет (Все метки)
У меня есть класс А.
Дело в том, что у меня несколько классов, все они наследуют B. Третий код проверяет: if([класс] instanceof B) { Тут надо изменить [класс]`у пременную type; } Добавлено через 2 минуты Поправил*
0
|
|||||||||||
| 07.03.2015, 19:59 | |
|
Ответы с готовыми решениями:
22
Изменить переменную из класса MainActivity в классе MainRenderer Как изменить переменную в классе, находящуюся в private? Изменить значение переменной в Родительском классе используя Потомственной класс |
|
89 / 1 / 3
Регистрация: 04.07.2013
Сообщений: 282
|
||||||
| 07.03.2015, 20:16 [ТС] | ||||||
|
Вы не поняли. Допустим, есть класс С extends B
В другом классе, мне надо сделать так...
0
|
||||||
|
Почетный модератор
|
|||||||||||
| 07.03.2015, 20:29 | |||||||||||
|
Или я что то не понимаю? Объявляйте ваши объекты классов C, D, E, которые унаследованы от B сразу так:
если потом понадобится расширить тип, то:
иначе A... Добавлено через 2 минуты svk2140, давайте начнем с того что у вас дано: У меня есть класс А. public class A extends B У меня есть класс B. public class A extends B Добавлено через 30 секунд Уже тут ошибка (опечатка)... Добавлено через 1 минуту Думаю что класс B таки наследует A, то есть надо удалить в классе A наследование...
1
|
|||||||||||
|
89 / 1 / 3
Регистрация: 04.07.2013
Сообщений: 282
|
|
| 07.03.2015, 20:31 [ТС] | |
|
Да-да-да-да-да))))
Класс B просто B (public class B) По-моему придумал вариант - зачем делать instanceof, для проверки группы объектов. Достаточно представить тип объекта переменной, и проверять её, а не делать instanceof, тогда это сократит много кода...
0
|
|
|
Почетный модератор
|
||||||
| 07.03.2015, 20:41 | ||||||
|
svk2140, короче разберитесь для начала что у вас A и что B... скиньте новые примеры кода... Тогда будем обсуждать (я потом поправлю первый пост)
Добавлено через 7 минут svk2140, тогда так: не???
То есть я так понимаю... Если надо сужать тип то нет смысла в приведении типа если вы двигаетесь в сторону суперкласса B. Иначе проверять if (instanceof A), то делаем ссылку на объект как объект класса А
0
|
||||||
|
89 / 1 / 3
Регистрация: 04.07.2013
Сообщений: 282
|
|
| 07.03.2015, 20:45 [ТС] | |
|
А наследует Y
B наследует Y С наследует Y... В третем классе, у нас есть проверка [объект] instanceof Y, потом нам надо объекту изменить переменную type, но объект это ещё более основной класс, и переменной type не содержит. А теперь проблема: надо изменить объекту, будь-то это А, В или С переменную type.
0
|
|
|
Почетный модератор
|
||||||
| 07.03.2015, 20:49 | ||||||
|
Вот вы уже второй раз меняете терминологию... теперь у нас общий суперкласс Y...
Добавлено через 1 минуту
0
|
||||||
|
89 / 1 / 3
Регистрация: 04.07.2013
Сообщений: 282
|
||||||
| 07.03.2015, 21:01 [ТС] | ||||||
|
Так по вашему коду, мы изменим type классу В, а надо классу объекта, при этом он не имеет переменной type, а type есть в классе А или другом классе, который наследует B. Можно-ли как-то обойтись без перебора (A instanceof B), (другой класс instanceof B)?
Пример:
Добавлено через 11 секунд Я плохо знаю java, просто)*
0
|
||||||
|
Почетный модератор
|
|
| 07.03.2015, 21:05 | |
|
svk2140, если вы всё таки решитесь на использование модификатора protected в родительском классе, тогда поудаляйте свои private методы в потомках вообще, если они не меняют (не переопределяют содержимое метода родительского)...
0
|
|
|
89 / 1 / 3
Регистрация: 04.07.2013
Сообщений: 282
|
|
| 07.03.2015, 21:09 [ТС] | |
|
Хм, ещё 1 мысль пришла:
Если изменять в B переменную type, а в А ставить переменную type из B. Это вроде как костыль... Подожду, может кто-то ответит...
0
|
|
|
Почетный модератор
|
|||||||
| 07.03.2015, 21:14 | |||||||
Сеттер с protected доступен потомкам...
0
|
|||||||
|
89 / 1 / 3
Регистрация: 04.07.2013
Сообщений: 282
|
|
| 07.03.2015, 21:18 [ТС] | |
|
Вы меня не понимаете... Даже не знаю, продолжать-ли вам пытаться объяснить мой вопрос...
Была 1 идейка, но она не верная. Сделать абстрактный метод в B, в A писать то, что должно выполнятся, при этом передавая из B в A type, а третим классом изменять в B type (Потом она будет передаваться А). Но изменять переменную в абстрактном классе нельзя ![]() Если вы до сих пор не поняли что я хотел спросить, увы, объяснить вам не смогу.
0
|
|
|
Почетный модератор
|
|
| 07.03.2015, 21:36 | |
|
svk2140, в вашем случае абстрактный и неабстрактный классы B отличаться не будут вообще никак, кроме того что нельзя будет создать объект класса B...
Добавлено через 18 секунд Идея бредовая... не туда копаете... Добавлено через 3 минуты Если я вас правильно понимаю, то задача обстоит так: Есть суперкласс B. У него есть приватная переменная type... Есть потомки класса B... И есть класс Tester, который создает объектны классов потомков класса B и в зависимости от того какой у них класс, надо поменять переменную в классе родителе (суперклассе В) Добавлено через 2 минуты почему бы не объявить сеттер в классе B который выставляет значение в переменной... ну он тогда должен быть паблик... Добавлено через 3 минуты svk2140, вы объясните, зачем столько всего... Это у вас задание или вы это для себя пишете... если для себя то надо 10 раз подумать... чтобы продолжать... Добавлено через 4 минуты Принцип инкапсуляции в том, что если переменная объявлена в классе как private, то ее никто не должен видеть и вообще про нее знать... Даже про то что ее можно изменить никто не должен знать... Даже если этот кто-то ваш друг, вы должны оставить в тайне и от него реализацию вашего класса B. Он, тот кто использует ваш класс должен знать методы getName, setName, которые доступны для "несекретных" переменных типа private... Если переменная собирается использоваться потомками можно написать протектед getMyVariable(); но дальше нет смысла... ибо третий код не может ниче сделать с вашими методами внутри класса B...
0
|
|
|
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
|
|
| 07.03.2015, 21:37 | |
|
Догадываюсь что у него на уме.
Куча оружия, у каждого свои параметры. Он хочет создавать объекты класса оружие, но что-бы начинка работала по разному. Я помню этого человека по теме из с++ раздела, поэтому не берусь даже пытаться ему объяснить что такое интерфейсы и абстрактные классы.
0
|
|
|
89 / 1 / 3
Регистрация: 04.07.2013
Сообщений: 282
|
|
| 07.03.2015, 21:40 [ТС] | |
|
Эм, вы помните меня? Я тут был 3-4 года назад, в последний раз.
0
|
|
| 07.03.2015, 21:42 | |
|
0
|
|
|
89 / 1 / 3
Регистрация: 04.07.2013
Сообщений: 282
|
|
| 07.03.2015, 21:58 [ТС] | |
|
Надо сначала разобраться в архитектуре игры для которой я пишу мод, а потом уже пытаться что-то объяснить.
Пишу мод для майнкрафта, но, поступает Item, но каким-то раком он содержит информацию о том, какой наследник это, и можно проверить (Item instanceof Guns). Добавлено через 29 секунд Ты кто-то из моих знакомых, Паблито?) Добавлено через 14 минут И вы совершенно меня не поняли, это видно по названию темы...
0
|
|
|
Почетный модератор
|
||||||
| 07.03.2015, 21:59 | ||||||
|
svk2140, фабрика оружия:
0
|
||||||
| 07.03.2015, 21:59 | |
|
Помогаю со студенческими работами здесь
20
Изменить поле в классе через аргумент события Изменить переменную через функцию Как обьявить переменную в одном классе и что бы ее было видно в дочернем классе Изменить переменную класса через указатель Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
|
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение.
И на уровне агентов добавится между грибами или бактериями взаимодействий.
До того я пробовал подход через многомерные массивы,. . .
|
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Налог на собак: https:/ / **********/ gallery/ V06K53e
Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf
Пост отсюда. . .
|