請解釋Java中靜態和動態綁定的概念。關於Java中的靜態和動態綁定
我所掌握的是Java中的靜態綁定發生在編譯期間,而在運行期間發生動態綁定時,靜態綁定使用Type(Class in Java)信息進行綁定,而動態綁定使用Object來解析綁定。
這是我理解的代碼。
public class StaticBindingTest {
public static void main (String args[]) {
Collection c = new HashSet();
StaticBindingTest et = new StaticBindingTest();
et.sort (c);
}
//overloaded method takes Collection argument
public Collection sort(Collection c) {
System.out.println ("Inside Collection sort method");
return c;
}
//another overloaded method which takes HashSet argument which is sub class
public Collection sort (HashSet hs){
System.out.println ("Inside HashSet sort method");
return hs;
}
}
和上述程序的輸出是集排序方法
動態綁定的內部...
public class DynamicBindingTest {
public static void main(String args[]) {
Vehicle vehicle = new Car(); //here Type is vehicle but object will be Car
vehicle.start(); //Car's start called because start() is overridden method
}
}
class Vehicle {
public void start() {
System.out.println("Inside start method of Vehicle");
}
}
class Car extends Vehicle {
@Override
public void start() {
System.out.println ("Inside start method of Car");
}
}
輸出是汽車的啓動方法裏面。請告知:這種理解是否正確,請提供更多示例。謝謝。
這似乎成爲常態,這些天SO ... – 2012-04-28 04:26:39