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!!!
  • 相关阅读:
    选择排序
    冒泡排序
    博彦科技面试题笔试题
    智力面试题
    NET中Application,Session,Cookie,ViewState,Cache,Hidden 缓存机制 .
    asp.net/html清理页面缓存的方法
    设置easyui input默认值
    EasyUI分页索引不能输入非数字
    EasyUI Field
    Asp.Net实现无刷新文件上传并显示进度条(非服务器控件实现)(转)
  • 原文地址:https://www.cnblogs.com/JunkingBoy/p/14615186.html
Copyright © 2011-2022 走看看