• Java中的多态详解


    一、多态的概念

    多态分为类的多态和方法的多态,类的多态就是一个类型可以有不同的表现形态,什么样的类型才会具备多态呢?只有被多个子类继承或者实现的父类才具备多态的特征,因为在运行期间可以根据具体的子类表现出不同的状态,比如说一个父类Person有Student、Worker、 Teacher、 Farmer 四个子类,在运行的时候如果实例化的子类是Student则此时Person表现是学生的行为、如果实例化的子类是Worker则此时Person表现是工人的行为,这就是父类表现出来的多态,类的多态的表现就是向上转型和向下转型。

    方法的多态就是一个方法名称却有不同的实现,其实就是方法的重载,在调用方法的时候具体调用哪一-个是在运行期根据传递的实际参数的类型来确定调用哪一个方法,也就是同一个方法名称可以有不同的表现形式,这就是方法的多态。方法多态的表现就是方法的重载。

    二:类多态的好处

    思考一个需求:有四个类Student、Worker、 Teacher、 Farmar, 要求在一个 类中定义方法来将以上的类作为方法的参数接受。现在能想到可以使用方法的重载接受。

    DEMO:方法的重载解决需求

    此时可以使用重载方法实现需求,但是存在很大的弊端,假如有一万个类型需要接受那么需要在Aplay中重载方法一万次,这样的代码应变性不高,耦合度高,依赖性强,此时我们可以使用多态的特征解决(向上转型),可以将接受参数的方法的参数类型定义为所有类的父类。

    DEMO:使用多态实现

    此时Aplay类中的getInfo方法就不需要重载了,这就是多态的好处的直接体现

    有完整的Java初级,高级对应的学习路线和资料!专注于java开发。分享java基础、原理性知识、JavaWeb实战、spring全家桶、设计模式、分布式及面试资料、开源项目,助力开发者成长!


    欢迎关注微信公众号:码邦主

  • 相关阅读:
    USACO2008 Cow Cars /// oj23323
    USACO2008 Roads Around The Farm /// queue oj23321
    USACO2007 捕牛记 /// queue+桶 oj1503
    哈理工多校算法赛一
    USACO2012 Haybale stacking /// 区间表示法 oj21556
    USACO2012 Broken necklace /// DP oj10103
    USACO2004 cube stacking /// 带权并查集 oj1302
    ACM-ICPC 2018 南京赛区网络预赛 J sum (找一个数拆成两个无平方因子的组合数)
    分层图 (可以选择K条路的权为0,求最短路)
    POJ 3537 Crosses and Crosses(sg博弈)
  • 原文地址:https://www.cnblogs.com/hehe199316/p/14229474.html
Copyright © 2020-2023  润新知