Java动态绑定与静态绑定

来源:互联网 发布:大数据和云计算的关系 编辑:程序博客网 时间:2024/06/08 18:51

Java动态绑定来自于继承体现子类继承父类子类重新覆盖了父类的方法,就是动态绑定,以下举例:

动态绑定是在运行期间

动物类:

/** * 创建一个动物类 * @author Liudeli */public class Animal {    /**     * 此函数打印一句话,显示样式     */    public void showStyle() {        System.out.println("Animal showStyle()...");    }}

人类:

/** * 定义一个人类 * @author Liudeli */public class Person extends Animal{    /**     * 重写父类的 showStyle 方法     */    public void showStyle() {        System.out.println("Person showStyle()...");    }}

狗类:

/** * 定义一个狗类 * @author Liudeli */public class Dog extends Animal{    /**     * 重写父类 showStyle 方法     */    public void showStyle() {        System.out.println("Dog showStyle()...");    }}

测试程序:

/** * 测试程序 * @author Liudeli */public class Main {    public static void main(String[] args) {        // 当父类引用去实例化子类,会执行子类中的方法,这个过程就是动态加载        Animal person = new Person();        person.showStyle();        Animal dog = new Dog();        dog.showStyle();    }}

运行结果:
这里写图片描述



静态绑定:

静态绑定是在编译期间

/** * 定义动物类 * @author Liudeli */class Animal {};/** * 定义人类继承动物类 * @author Liudeli */class Person extends Animal {};/** * 定义够累继承动物类 * @author Liudeli */class Dog extends Animal {};/** * 此类包含了执行父类子类 * @author Liudeli */public class MyRun {    public void showMethod(Animal animal) {        System.out.println("Animal showMethod()...");    }    /**     * 方法重载     * @param dog     */    public void showMethod(Person person) {        System.out.println("Person showMethod()...");    }    /**     * 方法重载     * @param dog     */    public void showMethod(Dog dog) {        System.out.println("Dog showMethod()...");    }}

测试程序:

/** * 测试程序 * @author Liudeli */public class Main {    public static void main(String[] args) {        MyRun myRun = new MyRun();        myRun.showMethod(new Animal());        myRun.showMethod(new Dog());        myRun.showMethod(new Person());    }}

运行结果:
这里写图片描述


其实在程序编译的时候就决定会使用 showMethod(Animal animal) {}方法,不管在运行的时候传入的实际对象是什么,还是会执行 showMethod(Animal animal) {}方法,Java重载是静态绑定的。

以上还有很多不足之处,还没有来得及完善,谢谢大家观看!!!!!!!


谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,
刘德利CSDN博客, http://blog.csdn.net/u011967006

1 0
原创粉丝点击