#oop #inheritance #interface #abstraction
#ооп #наследование #интерфейс #абстракция
Вопрос:
Это вопрос об абстракции.
Я хочу иметь возможность использовать два совершенно разных графических интерфейса для моего приложения. Они совершенно разные, но реализуют один и тот же интерфейс.
Мой вопрос в том, как будет выглядеть конструктор? Какой тип объекта входит в подпись?
Они не расширяют общего родителя, поэтому я не могу использовать полиморфизм.
объект контроллера хочет быть введен с объектом, который реализует отображаемый интерфейс.
interface Displayable {
void display();
}
class Display1 implements Displayable {
public void display() {
//Shows something Fancy on the screen
}
}
class Display2 implements Displayable {
public void display() {
//write something to console
}
}
class Main {
public static void main(String[] args) {
// Controller controller = new Controller(new Display1());
Controller controller = new Controller(new Display2());
controller.display();
}
}
class Controller {
????? display;
public Controller(?????? display) {
this.display = display;
}
public void display() {
display.display();
}
}
Комментарии:
1. Похоже, вы ответили на свой собственный вопрос: «объект контроллера хочет быть введен с объектом, который реализует отображаемый интерфейс». И т.д.
public Controller(Displayable display) { ... }