我想知道在java中Dynamic Binding
的優點。動態綁定
public class Animal {
public String type = "mammal";
public void show() {
System.out.println("The animal is a: " + type);
}
}
public class Dog extends Animal {
public String type;
public Dog(String type){
this.type = type;
}
public void show() {
System.out.println("The dog is a: " + type);
}
}
public static void main(String[] args) {
Animal doggie = new Dog("daschund");
doggie.show(); // "The dog is a: daschund" (dynamic binding)
System.out.println("The type is: " + doggie.type); //"The type is: mammal" (static binding)
}
我想,這是一種繼承策略。但有些人稱之爲動態綁定。這就是爲什麼,我假設它會有什麼奇怪的。
相比什麼優勢? – Keppil
@Keppil:與「靜態綁定」相比。 (請參閱OP的源代碼中的最後一條評論。)繼承的實例方法被覆蓋,所以調用'doggie.show()'調用'Dog.show',它打印'Dog.type' - 「動態綁定「 - 而字段不會被覆蓋,所以'doggie.type'的使用使用'Animal.type' - 」靜態綁定「。 – ruakh
@ruakh:啊,'靜態綁定'部分是不可見的,我的壞。 – Keppil