Как сделать, чтобы из одного класса перейти к другому классу? Например, имеются определённые условия, при которых должен начать выполнение один класс, а при других условиях другой.
Класс не может выполняться. Выполняется код, который находится в классе. Чтобы это происходило, необходимо создать экземпляр класса, т.е. объект класса.
Обычно объекты взаимодействуют посредством передачи параметров. То есть когда вы передаете один объект другому с помощью метода. Хотя это может быть и конструктор, или интерсептор, или ДИ, АОП.
Можно использовать метод рефакторинга "Замена условного оператора полиморфизмом", чтобы решить этот вопрос корректно.
Почему бы не создать один абстрактный класс, сделав несколько наследником и переопределив его базовые методы по своему, а затем при определенных условиях создать объект необходимого класса и вызвать его метод. Более подробно: https://refactoring.guru/ru/replace-conditional-with-polymorphism
Пример:
abstract class Bird {
//...
abstract double getSpeed();
}
class European extends Bird {
double getSpeed() {
return getBaseSpeed();
}
}
class African extends Bird {
double getSpeed() {
return getBaseSpeed() - getLoadFactor() * numberOfCoconuts;
}
}
class NorwegianBlue extends Bird {
double getSpeed() {
return (isNailed) ? 0 : getBaseSpeed(voltage);
}
}
// Somewhere in client code
speed = bird.getSpeed();
Чтобы наследовать класс, достаточно вставить имя наследуемого класса с использованием ключевого слова extends:
public class MainActivity extends Activity {
} В этом коде мы наследуемся от класса Activity и добавляем свой код, который будет отвечать за наше приложение.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Изначально IDE работала нормально, но с некоторых пор почему-то перестала корректно запускатьсяИдет загрузка и подклчючение модулей, но после...
Не получается открыть файл в программеУже открывал и как в языке Си,через адрес файла указывал, по разному вообщем
Прямоугольную комнату размерами M на N (сначала по горизонтали, а потом по вертикали) замостили треугольными плитками и их пронумеровали,...