У меня возникли трудности с пониманием того, как использовать композицию и интерфейс для поддержки композиции вместо наследования? Примером может быть:Практическое использование композиции и интерфейса в Java?
Интерфейс:
public interface IMachine {
void TurnOn();
void TurnOff();
}
машина класса является родительский класс класса принтеров
public class Machine {
protected boolean isOn;
public Machine(boolean isOn) {
this.isOn = isOn;
}
public void TurnOn() {
isOn = true;
System.out.println("Machine is on !");
}
public void TurnOff() {
isOn = false;
}
}
Теперь, если я создаю класс принтера, который реализует IMachine интерфейса, он будет реализовывать методы интерфейса IMachine. Но, допустим, я создаю Clock Class, который реализует интерфейс IMachine, тогда я должен снова реализовать эти методы. Есть ли более эффективный способ использования композиции и интерфейса и делегирования методов классу Machine?
Простое решение: просто дайте 'Machine реализует IMachine', установите' turnOn() 'и' turnOff() 'как' final' и пусть 'Printer' и' Clock extends Machine'. – Turing85
@ Turing85 Точка с композицией - это * не * использовать наследование. – Andreas