在java中输入(动态绑定)

时间:2015-03-01 21:45:11

标签: java dynamic binding

蔬菜类

  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是如何工作的。

0 个答案:

没有答案