zoukankan      html  css  js  c++  java
  • 4.3Java多态(polymorphism)

    4.3Java多态(polymorphism)

    多态的定义:

    • 指同一个方法的调用,由于对象不同可能会有不同的行为。

    • 现实生活中,同一个方法,具体实现会完全不同

    对象:人,方法:休息

    1. 小孩,玩游戏

    2. 程序员,敲代码

    多态的要点:

    多态指的是方法的多态而不是属性的多态

    必要条件:

    • 必须要有继承

    • 必须要有方法的重写

    • 必须要父类引用指向子类对象

    • 父类引用指向子类对象后,用该父类引用调用子类重写的方法,此时多态就出现了。

    package cn.Lucifer.oo;

    /**
    * 测试多态
    * @author Lucifer
    */
    //写三个类,第一个是Animal
    class Animal{
       //叫一声的方法
       public void shout(){
           System.out.println("叫了一声!");
      }
    }

    //第二个类,狗
    class Dog extends Animal{
       //重写方法
       public void shout(){
           System.out.println("汪汪汪");
      }

       //还有一个专属方法
       public void seeDoor(){
           System.out.println("看门");
      }
    }

    //再写一个类,猫
    class Cat extends Animal{
       //重写方法
       public void shout(){
           System.out.println("喵喵喵");
      }
    }
    public class TestPolym {
       public static void main(String[] args) {
           //创建Animal对象
           Animal a = new Animal();
           animalCry(a );
      }

       //为了方便调用写一个方法
       static void animalCry(Animal a){
           a.shout();
           /*
           a的类型是Animal
           Dog是子类对象,之类对象给了父类引用
           父类的类型指向了子类的对象,这时候就发生了多态
           传的对象不一样,所以调用的shout方法也不一样,根据实参确当
           存在目的为了少些重载
           下面加子类可以方便调用
            */

           Dog d = new Dog(); //把Dog d 改为Animal d没有问题,到调用方法的时候还是运行Dog的方法
    //       animalCry(d);
           animalCry(new Cat());
      }
    }

     

    It's a lonely road!!!
  • 相关阅读:
    iommu分析之smmu v3的实现
    关于virtio_net网卡命名的小问题
    Affinity broken due to vector space exhaustion 问题
    iommu系列之概念解释篇
    获取客户端Mac地址
    SqList *L 和 SqList * &L的区别/学习数据结构突然发现不太懂 小祥我查找总结了一下
    前端页面报表图在线js库
    MybatisPlus自动填充
    SpringBoot集成druid开启内置监控页面
    简单的系统用户权限设计图
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14615186.html
Copyright © 2011-2022 走看看