Как из одного класса вызвать другой класс?

316
07 апреля 2018, 22:45

Как сделать, чтобы из одного класса перейти к другому классу? Например, имеются определённые условия, при которых должен начать выполнение один класс, а при других условиях другой.

Answer 1

Класс не может выполняться. Выполняется код, который находится в классе. Чтобы это происходило, необходимо создать экземпляр класса, т.е. объект класса.

Обычно объекты взаимодействуют посредством передачи параметров. То есть когда вы передаете один объект другому с помощью метода. Хотя это может быть и конструктор, или интерсептор, или ДИ, АОП.

Answer 2

Можно использовать метод рефакторинга "Замена условного оператора полиморфизмом", чтобы решить этот вопрос корректно.

Почему бы не создать один абстрактный класс, сделав несколько наследником и переопределив его базовые методы по своему, а затем при определенных условиях создать объект необходимого класса и вызвать его метод. Более подробно: 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();
Answer 3

Чтобы наследовать класс, достаточно вставить имя наследуемого класса с использованием ключевого слова extends:

public class MainActivity extends Activity {

} В этом коде мы наследуемся от класса Activity и добавляем свой код, который будет отвечать за наше приложение.

READ ALSO
Ошибки NetBeans 8.2 IDE

Ошибки NetBeans 8.2 IDE

Изначально IDE работала нормально, но с некоторых пор почему-то перестала корректно запускатьсяИдет загрузка и подклчючение модулей, но после...

260
Класс uses or overrides a deprecated API

Класс uses or overrides a deprecated API

Есть такой класс:

273
Не могу открыть файл(C++)

Не могу открыть файл(C++)

Не получается открыть файл в программеУже открывал и как в языке Си,через адрес файла указывал, по разному вообщем

254
Прямоугольная комната

Прямоугольная комната

Прямоугольную комнату размерами M на N (сначала по горизонтали, а потом по вертикали) замостили треугольными плитками и их пронумеровали,...

186