• 动态绑定多态


    动态绑定也指多态:是指在执行期间(而非编译期间)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法,

    下面的例子是根据Lady对象的成员变量pet所引用的不同的是积累形成而调用相应的enjoy方法

     

    多态:要有继承;要有重写;父类引用指向子类对象

     

    当这三个对象都被满足的时候调用父类里面被重写的方法,实级当中new 的是哪一个子类对象就调用哪一个子类的方法

    class Aniaml {

      public String name;

      Animal (String name) {

      this.name = name;

      public void enjoy(){
        System.out.println("叫声......");
        }

      }

    }

     

    class Cat extends Animal {

      private String eyeColor;

      Cat(String n,String f) {

        super(n);

        this.eyeColor = eyeColor;

      }

      public void enjoy() {

        System.out.println("猫叫声......");

      }

    }

     

    class Bird extends Animal {

      private String featherColor;

      Bird(String n,String f) {

        super(n);

        featherColor = f;

      }

      public void enjoy() {

        System.out.println("鸟叫声.....");

       }

    }

     

    class Lady {

      private String name;

      private Animal pet;

      Lady(String name,Animal pet) {

        this.name = name;

        this.pet = pet;

      }

      public void myEnjoy(){

        pet.enjoy();

      }

    }

     

    public class Test {

      public static void main(String args[]) {

        //Lady l3 = new Lady("l3",new Bird("birthname","green"));

        Cat c = new Cat("catname","blue");

        Bird d = new Bird("dogname","black");

        Lady l1 = new Lady("l1",c);

        Lady l2 = new Lady("l2",d);

      }

    }

    如果按道理来说他应该打印叫声...,但是事实上他打印的是,猫叫声.....和狗叫声...... ,这也就牵扯到我们 的动态绑定也称多态。

    来看我们的内存的图:

     

     

     

     

  • 相关阅读:
    Codeforces Round #647 (Div. 2)
    Codeforces Round #647 (Div. 2)
    Codeforces Round #647 (Div. 2)
    “科大讯飞杯”第十七届同济大学程序设计预选赛暨高校网络友谊赛(ABDF)
    POJ3764 The xor-longest Path(异或/01Trie)
    06.Python网络爬虫之requests模块(2)
    05.Python网络爬虫之三种数据解析方式
    04.Python网络爬虫之requests模块(1)
    03.Python网络爬虫第一弹《Python网络爬虫相关基础概念》
    02.Python网络爬虫第二弹《http和https协议》
  • 原文地址:https://www.cnblogs.com/white-the-Alan/p/10183008.html
Copyright © 2020-2023  润新知