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!!!
  • 相关阅读:
    ELK 5.6.8 安装部署
    Port Forwarding in Windows
    python 压缩文件为zip后删除原文件
    Windows安装nginx服务
    redis 启动停止脚本
    使用sed替换指定文件指定行的指定文本
    auto和bool
    宽字符
    函数递归
    关于主机用户名显示为"-bash-4.1$"
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14615186.html
Copyright © 2011-2022 走看看