interface Espece { public String getPlumage(); } public class Oiseau { public Espece espece; public Oiseau(Espece espece) { this.espece = espece; } public String getPlumage() { espece.getPlumage(); } } public class HirondelleEurop implements Espece { public String getPlumage() { return "normal"; } } public class HirondelleAfricaine implements Espece { public int nombreDeNoix; public HirondelleAfricaine(int nbNoix) { this.nombreDeNoix = nbNoix; } public String getPlumage() { return (this.nombreDeNoix > 2) ? "fatigué" : "normal"; } } public class PerroquetBleuNorvégien implements Espece { public int voltage; public HirondelleAfricaine(int vlt) { this.voltage = vlt; } public String getPlumage() { return (this.voltage > 100) ? "roussi" : "de toute beauté"; } }