您的位置:首页 > 编程语言 > Java开发

java的方法动态绑定

2017-04-18 15:18 239 查看

1.简介

方法可以在沿着继承链的多个类中实现。 JVM 决定运行时调用哪个方法。动态绑定工作机制如下: 假设对象 o 是类C1,C2,…,Cn−1,Cn 的实例, 其中 C1是 C2的子类, C2 是 C3 的子类, … , Cn-1是 Cn 的子类, 如图 11-2 所示。 也就是说, Cn 是最通用的类, C1 是最特殊的类。 在 Java 中, Cn 是 Object 类。 如果对象 o 调用一个方法 p, 那么JVM 会依次在类 Cl, C2, … , Cn-1, Cn中查找方法 p 的实现, 直到找到为止。 一旦找到一个实现, 就停止査找, 然后调用这个首先找到的实现。



2.实例

package DynamicBindingDemo;
public class DynamicBindingDemo {
public static void main(String[] args) {
Object o = new GraduateStudent(); // implicit casting
Object o1 = new Object();
if (o1 instanceof GraduateStudent) {
System.out.println("Never got here");
GraduateStudent gs = (GraduateStudent)o1; // explicit casting
}
m(o);
m(new Student());
m(new Person());
m(new Object());
}
public static void m(Object x) {
System.out.println(x.toString());
}
}
class GraduateStudent extends Student {
}
class Student extends Person {
public String toString() {
return "Student.toString() on Student class";
}
}
class Person extends Object {
public String toString() {
return "Person.toString() on class Person";
}
}


结果如下:

Student.toString() on Student class

Student.toString() on Student class

Person.toString() on class Person

java.lang.Object@15db9742
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: