父类
================================================================
public class Fruit {
public void eat() {
System.out.println("i wanna eat fruit");
}
}
-----------------------------------------------------------------------------
publicClassAppleextendsFruit{
publicvoideat(){
System.out.println(“i wanna eat apple”);
}
}
publicClass Orange extendsFruit{
publicvoideat(){
System.out.println(“i wanna eat orange”);
}
}
--------------------------------------------------------------------------------------
测试类
-------------------------------------------------------------------------------------
public class TestBind {
public static void chose(Fruit f) {
f.eat();
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Fruita = new Apple();
Fruito = new Orange();
TestBind.chose(a);
TestBind.chose(o);
}
}
输出结果:
i wanna eat apple
i wanna eat orange
--------------------------------------------------------------------------------------
动态绑定:是指在执行期间(非编译期间)判断所引用对象的实际类型,根据其实际的类型调用其相应方法。
如上代码在执行期就决定调用哪个实例的方法了
--------------------------------------
Java中除了static和final方法外,其他所有的方法都是运行时绑定(也叫后期绑定)的。【不能被重写】
private方法都被隐式指定为final的【子类不能重写父类的私有方法】
因此final的方法不会在运行时绑定。
来源:小伙伴开发网http://www.kaifaer.com