关于java+多态关键点--动态绑定

父类生气


================================================================

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



你可能感兴趣的:(java)