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

Наследование параметров Java

10.08.2018, 21:34. Показов 2273. Ответов 26

Студворк — интернет-сервис помощи студентам
Добрый день!
Вопрос, который бывалым, возможно, покажется странным.
Можно ли в производном классе Java унаследовать структуру параметров родительского класса, а не только метод родительского класса?
К примеру, родительский класс
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Branch1 {
 
    double x1;
    double m;
    double mKL;
    double mK1;
    double mL1;
 
 
    Branch1(double KL, double K1, double L1) {
        mKL = KL;
        mK1 = K1;
        mL1 = L1;
    }
 
    Double OutputBranch1() {
 
        x1 = 3.84 * ((Math.pow((0.1 * (mKL + mK1 + m)), 0.75)) * (Math.pow(mL1, 0.35)));
        return x1;
    };
 
}
Производный класс

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Branch2 extends Branch1 {
 
    double x2;
 
    Branch2(double K, double K2, double L2) {
        super(K, K2, L2);
        this.x2=x2;
    }
    
    public static void main(String[] args) {
        Branch2 b = new Branch2(8000.00, 500, 200.00);
 
        System.out.print(b.OutputBranch1());
    }    
}
Если я захочу изменить метод в родительском, он без проблем в измененном виде наследуется в производном. Но если количество параметров изменится - к примеру в родительском, к double KL, double K1, double L1 добавится double M1. В таком случае в конструкторе производного класса вручную прописать дополнительный параметр. Если класс-ребенок один вопрос отпадает, но если количество классов-детей доходит до 100, то не очень, наверное, удобно заходить в конструктор каждого и копипастить/изменять количество параметров.

Может, вообще в таком случае отказаться от наследования и использовать другой механизм?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.08.2018, 21:34
Ответы с готовыми решениями:

Наследование в Java
Написал класс: public class Point extends Graph { private int x; private int y; private int color; public...

Наследование в Java
Здравствуйте кодеры! Есть вопрос по задаче! Не могу ни как понять ее. Я вроде как изменил код, добавил модели ноутбуков. Например...

Наследование в java
ребят,вот прога,как сделать в ней наследование,подскажите плс package программы; import java.io. IOException;/* подключение...

26
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
13.08.2018, 23:08
Студворк — интернет-сервис помощи студентам
Андрей1981, в Вашем коде не может быть двух и более разных типов(!) полей. Вы все параметризуете одним(!) типом. А если посмотрите на мой код, то там есть int и double
Возможно, конечно у Вас все поля должны быть одного типа. Но из постановки вопроса это не ясно.
0
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 128
14.08.2018, 09:23  [ТС]
В той задаче, которую я изначально решал все переменные, действительно, одного типа.

А потом, отвечая на Ваш вопрос, я предложил модификацию кода для случая двух типов
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
public class Branch1<T> {
double mKL;
int mK1;
int mL1;
 
T[] f;
 
    Branch1(T...f){
        T mKL = f[0];
        T mK1 = f[1];
        T mL1 = f[2];     
    }
 
}
Или я не понял Ваш вопрос?

Добавлено через 16 минут
Цитата Сообщение от Андрей1981 Посмотреть сообщение
структуру параметров
Какая задача решается? Может, кто решал уже такое...
Моделируется взаимодействие отраслей с нелинейными производственными функциями. Использовать обычную систему нелинейных уравнений муторно - поэтому я для каждой отрасли прописываю отдельный класс, в котором рассчитывается значение нелинейной функции для этой отрасли. А в отдельном обобщающем классе создаются объекты классов-отраслей - Там же прописывается система уравнений, которая циклично результаты возврата значений метода каждого объекта преобразует в параметры этих же методов.
Поскольку во всех отраслях (классах) используется одна и та же функция, а различаться могут лишь значения ее переменных, то, при для экспериментов с видом функции, наверное, удобнее будет использовать наследование
0
 Аватар для Aviz__
2762 / 2069 / 510
Регистрация: 17.02.2014
Сообщений: 9,507
14.08.2018, 10:18
Цитата Сообщение от Андрей1981 Посмотреть сообщение
систему нелинейных уравнений
ваш подход, на мой взгляд, еще более тернист. нужно правильно развязать эту систему (возможно, я плохо понял, как вы это делаете).
Цитата Сообщение от Андрей1981 Посмотреть сообщение
переменных
или аргументов?
0
958 / 577 / 136
Регистрация: 23.05.2012
Сообщений: 7,364
14.08.2018, 11:55
Андрей1981, Вы б хотя бы запустить попробовали Ваш код
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Branch1<T> {
   //без разницы что указано в конструкторе эти переменные будут иметь значения по умолчанию
   double mKL;    // == 0.0
   int mK1;          // ==0
   int mL1;          // ==0
 
   T[] f;    // == null
 
   Branch1(T...f){
      //тут определяются новые переменные f, mKL, mK1, mL1, которые не имеют никакого отношения к вышеописанным
      T mKL = f[0];
      T mK1 = f[1];
      T mL1 = f[2];     
   }
}
Но допустим Ваш код правильный. Имеем поле double mKL;. Далее я создаю экземпляр класса Branch1<Float> branch1 = new Branch1<>(); Таким образом в конструктор "приходят" все переменные класса одного(!) Float (хотя решение для двух классов должно быть). При попытке сделать mKl = f[0]; получите ClassCastException.
Цитата Сообщение от Андрей1981 Посмотреть сообщение
Использовать обычную систему нелинейных уравнений муторно
То есть вместо того, чтоб работать с матрицей произвольной длины, в которой будут храниться все коэффициенты, проще руками создавать новый класс для каждого уравнения?
0
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 128
14.08.2018, 22:32  [ТС]
ваш подход, на мой взгляд, еще более тернист. нужно правильно развязать эту систему (возможно, я плохо понял, как вы это делаете).
То есть вместо того, чтоб работать с матрицей произвольной длины, в которой будут храниться все коэффициенты, проще руками создавать новый класс для каждого уравнения?
Я еще не сказал, что модель должна обладать масштабируемостью и описывать сложные взаимодействия.
Под первым понимается возможность включения новых объектов моделирования - кроме отраслей далее будут включаться, к примеру, банки, внешние связи и т.д... Если все это наращивать в изначальную "полную" систему уравнений, получается "километровая борода" - каждое уравнение в системе разрастается в несколько строчек.
Под сложным взаимодействием я понимаю, к примеру, следующее: одна отрасль повышает спрос на продукцию другой отрасли. Вторая наращивает выпуск. Но повышает и цену. Повышение цены нелинейно корректирует спрос и т.д... Я пытался описать это и другие аспекты взаимодействия в единую систему хотя бы для двух отраслей, и получалась "борода выражений". А к трем и более отраслям после этого уже было и страшно приступить.
Поэтому я и решил пойти путем декомпозиции - для каждого участника взаимодействия прописать класс, а в классе все параметры, характеризующие взаимодействие с другими классами (окружением), а также воздействие случайных факторов среды Фактически я собираюсь построить имитационную модель экономики средствами Java.
0
 Аватар для Aviz__
2762 / 2069 / 510
Регистрация: 17.02.2014
Сообщений: 9,507
15.08.2018, 09:03
Андрей1981, на вскидку, у вас не очень хорошо разработана объектная модель моделирования системы. ооп, как правило, при правильном подходе, сильно упрощает все. поищите или поспрашайте здесь https://www.cyberforum.ru/oop/ что-то подобное, если не ошибаюсь там обсуждалось
0
0 / 0 / 0
Регистрация: 05.06.2016
Сообщений: 128
15.08.2018, 22:12  [ТС]
Спасибо, я посмотрю
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
15.08.2018, 22:12

Java наследование
Немного запутался в теме наследования, а конкретнее что НЕ наследуется при наследовании ????

Наследование в Java
Привет, у меня постановка задачи следующая: есть Дом( вывести на экран год сооружения, количество этажей, материал) Подкласс должен быть...

Наследование в Java
Ребят можете объяснить почему в консоль выводит: &quot;1 2&quot;, а не &quot;2 2&quot;, или где можно про это прочитать? public class Class1 { ...

Задача на наследование по Java
Здравствуйте. Помогите пожалуйста решить вот такую задачу. Даны 2 класса Array.java(родительский класс) и Polynom.java(наследуемый класс)....

Java наследование и полиморфизм
Определить иерархию амуниции рыцаря. Экипировать рыцаря. посчитать стоимость амуниции. Провести сортировку амуниции по весу. Найти...


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

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Книги по геймдизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Родители токсичные абьюзеры по отношению к своим детям ругают их оскорбляют не любят
zorxor 08.11.2026
Жить в атмосфере постоянных оскорблений, критики и холодности со стороны родителей — это тяжелое и болезненное испытание, которое оставляет глубокие эмоциональные раны. Токсичное и абьюзивное. . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
Красочные поля с номером страницы svg+background-image
russiannick 04.11.2026
Красочные поля с номером страницы не менее важны чем в эпоху бумажных книг. Посему спешу представить почтеннейшей публике этот важный инструмент который эти поля и формирует. В процессе разработки. . .
Вступаем в новую фазу генерации favicons, векторную.
russiannick 02.11.2026
Теперь нет нужды скрывать что используется простой svg. Исходный код изображения помещаем в поле и жмем кнопку. Исходник преобразуется в вид корректный для помещения в favicon или в url(). Нажатие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru