蔬菜类
public class Vegetable {
public void cook() {
System.out.println("cook veg");
}
public static void eat(Vegetable veg) {
System.out.println("eat veg");
}
public static void eat(Bean bean) {
System.out.println("eat bean");
}
public void pick(Vegetable veg) {
System.out.println("pick 1");
}
public void pick(Bean bean) {
System.out.println("pick 2");
}
} // end class Vegetable
Bean Class
public class Bean extends Vegetable {
public void cook() {
System.out.println("cook bean");
}
public String name() {
return "bean";
}
} // end class Bean
扁豆类
public class Lentil extends Bean {
public String name() {
return super.name()+" lentil";
}
public void pick(Vegetable veg) {
System.out.println("pick 3");
}
} // end class Lentil
测试类
public class Test{
public static void main(String[] args){
Vegetable v = new Vegetable();
Bean b = new Bean();
Lentil len = new Lentil();
Vegetable vb = new Bean();
System.out.println(v.pick(len));
System.out.println(b.pick(len));
System.out.println(len.pick(len));
System.out.println(Vegetable.eat(len));
}
}
我真的不明白为什么这些工作。例如v.pick(len)。 len被声明为Lentil并且是Lentil类型。那么如果没有采用扁豆的功能,它将如何工作呢?所有其他功能都是一样的,我真的不明白Lentil是如何工作的。