提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
1.什么是动态绑定
在 Java 中, 调用某个类的方法, 究竟执行了哪段代码 (是父类方法的代码还是子类方法的代码) , 要看究竟这个引用指向的是父类对象还是子类对象. 这个过程是程序运行时决定的(而不是编译期), 因此称为动态绑定.
2.简单样例
people类
class people {
public int age=100;
public String name;
public void look(){
System.out.println("人在看手机");
}
}
student类
public class student extends people{
public String school;
public int age=10;
public void look(){
System.out.println("学生在看书");
}
}
主函数
public class Main {
public static void main(String[] args) {
people p1=new people();
p1.look();
people p2=new student();
p2.look();
}
}
运行结果
3.注意事项
p1和p2都是people类型的引用,但是前者指向的是people类型的实例,后者指向的是student类型的实例。
由运行结果可以得出,指向父类的实例就调用父类版本的look方法,指向子类的实例就调用子类版本的look方法。
如果look方法在父类和子类都存在,并且参数不同,此时调用look就不会涉及动态绑定,会根据传入参数的类型和个数,判断父类中是否有相匹配的方法,要是没有就会编译报错。