Bildschirm­foto 2023-01-09 um 13.54.54.png

public interface Flugverhalten { 
	void fliegen();
}

public class NichtFliegen implements Flugverhalten {
	@Override
	public void fliegen() { 
		System.out.println("Kann nicht fliegen");
	} 
}

public interface Quakverhalten { 
	void quaken();
}

public class Quietschen implements Quakverhalten {
	@Override
	public void quaken() { 
		System.out.println("Quiiietsch");
	} 
}

public abstract class Ente {
	private Flugverhalten flugverhalten; 
	private Quakverhalten quakverhalten;

	public void setFlugverhalten(Flugverhalten flugverhaltenKandidat) { 
		flugverhalten = flugverhaltenKandidat;
	}
	public void setQuakverhalten(Quakverhalten quakverhaltenKandidat) {
		quakverhalten = quakverhaltenKandidat; 
	}

	abstract void zeichnen();

	public void fliegen() { 
		flugverhalten.fliegen();
  }
  public void quaken() {
		quakverhalten.quaken(); 
	}

	public void schwimmen() {
		System.out.println("Alle Enten schwimmen, sogar Modellenten!");
	} 
}

public class Gummiente extends Ente {
	public Gummiente() { 
		setFlugverhalten(new NichtFliegen()); 
		setQuakverhalten(new Quietschen());
	}

	@Override
	void zeichnen() {
		System.out.println("Ich sehe aus wie eine Gummiente");
	}
}