public class Feeder {
public void feed(Animal animal) {
System.out.println("feed Animal.");
}
public void feed(Dog dog) {
System.out.println("feed Dog: " + dog.eat());
}
public void feed(Cat cat) {
System.out.println("feed Cat: " + cat.eat());
}
}
public interface Animal {
String eat();
}
public class Dog implements Animal {
@Override
public String eat() {
return "骨头";
}
}
public class Main {
public static void main(String[] args) {
Animal a = new Dog();
Feeder feeder = new Feeder();
feeder.feed(a);//print: feed Animal.
}
}
public interface Animal {
String eat();
void bindFeeder(Feeder feeder);
}
public class Dog implements Animal {
@Override
public String eat() {
return "骨头";
}
@Override
public void bindFeeder(Feeder feeder) {
feeder.feed(this);
}
}
public class Main {
public static void main(String[] args) {
Animal a = new Dog();
Feeder feeder = new Feeder();
a.bindFeeder(feeder);//print:feed Dog: 骨头
}
}