Пример из реального мира
Летучие мыши, птицы, стрекозы и люди способны летать, но развили способность делать это независимо благодаря конвергентной эволюции .
Применяется к Java
Bat
, Bird
, Dragonfly
и Human
- все реализуют функцию .fly()
, но не наследуют ее от общего класса , Мне нужна функция, которая принимает Organism
, не зная, является ли Bat
, Bird
, Dragonfly
или Human
, но зная, что она имеет функцию .fly()
.
Текущее решение
public flyBaby(Bat organism){
organism.fly();
}
public flyBaby(Dragonfly organism){
organism.fly();
}
public flyBaby(Bird organism){
organism.fly();
}
public flyBaby(Human organism){
organism.fly();
}
Неудачные попытки
public <T> void flyBaby(T organism){
organism.fly();
}
public void run(){
Bat fred = new Bat();
fred.infect("corona_virus");
flyBaby(fred);
}
или подобные
public void flyBaby(Flyable organism){
organism.fly();
}
public void run(){
Bat fred = new Bat();
fred.infect("corona_virus");
flyBaby((Flyable)fred);
}