1. 动态绑定的概念
指程执行期间(而不是在编译期间)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法 .
例如:
package org.demo.clone.demo;public classDynamicBound {public static voidmain(String[] args) {
Person person= newMan() ;
person.say() ;
}
}classPerson{public voidsay(){} ;
}classMan extends Person{public voidsay(){
System.out.println("Hey Man");
}
}
结果:
Hey Man
调用的是Person对象中的say方法 但是实际执行的是Man中的方法,这就是动态绑定。 在java语言中,继承中的覆盖就是是动态绑定的,当我们用父类引用实例化子类时,会根据引用的实际类型调用相应的方法
2. 静态绑定
静态绑定就是指在编译期就已经确定执行哪一个方法。方法的重载(方法名相同而参数不同)就是静态绑定的,重载时,执行哪一个方法在编译期就已经确定下来
package org.demo.demo;public classStaticBound {public static voidmain(String[] args) {
OutputNameout = newOutputName() ;
Person p= newPerson() ;
Person man= newMan() ;<