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!!!
  • 相关阅读:
    关于MySQL与SQLLite的Group By排序原理的差别
    利用Java针对MySql封装的jdbc框架类 JdbcUtils 完整实现(包括增删改查、JavaBean反射原理,附源代码)
    深入java并发Lock一
    windows 7 SDK和DDK下载地址
    用cocos2d-x 3.2 实现的FlappyBird
    Java替代C语言的可能性
    Spring Quartz结合Spring mail定期发送邮件
    web小流量实验方案
    paip.微信菜单直接跳转url和获取openid流程总结
    【java web】java运行预编译Groovy脚本
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14615186.html
Copyright © 2011-2022 走看看