动态绑定只能是父类的引用指向子类的对象。
例如:
public class Self {
private Person person;
public Person getPerson() {
return person;
}
public void setPerson(Person person) {
this.person = person;
}
public void ask(){
System.out.println("我问:你的爱好是什么?");
this.person.anwser();
}
}
public abstract class Person {
public abstract void anwser();
}
public class Lili extends Person{
public void anwser(){
System.out.println("Lili:我的爱好是唱歌。");
}
}
public class Tom extends Person{
public void anwser(){
System.out.println("Tom:我的爱好是打篮球!");
}
}
public class Test {
public static void main(String[] args) {
Self s = new Self();
Lili l = new Lili();
Tom t = new Tom();
s.setPerson(l);
s.ask();
}
}