zoukankan      html  css  js  c++  java
  • 多态是什么意思?

    比方一下:

    你和你朋友都是烟鬼,

    某日,你没有带烟, 而你朋友有n种烟,

    你说: 来根烟,

    朋友给你一根;

    你通过烟的过滤嘴, 品出为白沙烟

    你再要一根,

    品出这次是芙蓉王,

    再要一根,

    品出这次是熊猫

    ...

    上面描述的就是多态!

    烟 a = 白沙
    烟 b = 芙蓉王
    烟 c = 熊猫

    但发现没有, 仅仅通过"烟"基类, 引用到不同的具体类对象,

    就能让你调用到不同的对象, 这就是多态.

    而烟到你嘴里[此时你还没有发现是那种烟], 你仅仅凭借"吸"的动作,就识别出来,到底是哪种烟对象

    这就是多态的悬机.

    多态须具备:

    1. 基类 和各个子类

    2. 基类 引用, 指向实例化的子类对象.

    再举一个鸡的例子,

    鸡是所有其它鸡的基类, 定义了一个方法shape(), 此方法能指明鸡的形态. 所有的子类[火鸡,山鸡,田鸡等],都有这个shape方法, 表明自己的形态,

    如果用下面的方法定义我需要具体的鸡,

    [基类 引用 = 实现类的对象]

    for example:

    鸡 a = new 火鸡();

    鸡 a = new 田鸡();

    鸡 a = new 山鸡();

    鸡 a = new 母鸡();

    当我使用的时候, 我采用 a 这个引用,

    a.shape(), 就会得到鸡的形态.

    如果我定义的是

    鸡 a = new 火鸡();

    那么a.shape得到的是火鸡的形态, 而不需要用具体的

    火鸡 a = new 火鸡(); 再通过a.shape得到火鸡的形态
  • 相关阅读:
    移动端Web前端注解
    Atom 必备插件
    Gulp 前端自动化构建
    RESTful API 设计
    Cookie 的 增删查
    三步实现 AngularJS URL 去 # 号
    AngularJS $http 之 POST 传参
    Angular.JS中使用$watch监听模型变化
    AngularJS $apply() 解析
    [个人笔记]IDEA+MAVEN+testNG(reportNG)
  • 原文地址:https://www.cnblogs.com/0515offer/p/4094577.html
Copyright © 2011-2022 走看看