请解释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