zoukankan      html  css  js  c++  java
  • Java动态绑定与静态绑定

    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

  • 相关阅读:
    Java的一些命名规范
    Java利用泛型实现堆栈
    Java 将二进制打印成十六进制
    String对象的一些基本方法
    Java异常使用指南
    JAVAEE期末项目------文章发布系统
    java14周
    java第11周
    java第八周作业
    java第七周----json
  • 原文地址:https://www.cnblogs.com/android-deli/p/10322215.html
Copyright © 2011-2022 走看看