java中的类型(动态绑定)
蔬菜类java中的类型(动态绑定),java,dynamic,binding,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.prin
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
豆类
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.picklen。len被声明为小扁豆,属于小扁豆类型。那么,如果没有需要小扁豆的函数,这将如何工作呢?所有其他函数也是如此,我真的不明白lentl是如何工作的。lentl扩展了Bean,还有一个函数需要一个Bean。蔬菜也是一样。而且,这不是动态绑定。但即使它扩展了bean,也没有声明为bean。它不需要声明为bean才能工作吗?在你的主方法中什么是vblen?哦,对不起,忘了这个。把它加进去!