zoukankan      html  css  js  c++  java
  • 动态绑定多态

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

    下面的例子是根据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);

      }

    }

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

    来看我们的内存的图:

     

     

     

     

  • 相关阅读:
    第10组 Alpha冲刺 (2/6)
    第10组 Alpha冲刺 (1/6)
    第10组(72) 需求分析报告
    团队介绍及选题报告
    实验 7 : OpenDaylight 实验 —— Python 中的 REST API 调用
    第03组 Alpha冲刺 总结
    第03组 Alpha冲刺 (6/6)
    第03组 Alpha冲刺 (5/6)
    第03组 Alpha冲刺 (4/6)
    第03组 Alpha冲刺 (3/6)
  • 原文地址:https://www.cnblogs.com/white-the-Alan/p/10183008.html
Copyright © 2011-2022 走看看