• Java学习记录-4.多态


    多态致力于分离做什么和怎么做。意味着一个类型可以同时指代多种类型。

    向上转型

    把某个对象的引用视为对其基类的引用,即是向上转型。

    在方法中把形参定义为基类,应用向上转型,只需一个方法,就可以作用于基类和其所有的导出类。如基类Instrument,子类为Wind,那么将方法定义为tune(Indtrument),tune方法也就适用于Wind类(tune(Wind)),日后如果再定义一个导出类也不用再额外定义或修改tune方法了。

    由于后期绑定的原因,甚至可以把一个导出类的对象引用赋予给一个一个基类引用,在运行时编译器会自动选定使用导出类的方法的。

    在数组中也可以利用向上转型定义一个包含各种子类的基类数组。                                                                                                                                                                                                                         

    向上转型是绝对安全的,因为导出类一定大于等于基类,基类的方法在导出类中一定存在。

    注意,向上转型并不适用于实例域,final方法和static方法,由于private方法是自动final的,切对导出类不可见,故向上转型即便同名也并不会覆盖基类的private方法,极有可能会错误调用到基类方法。

    构造器在导出类的创建过程中是逐级向上调用的,以为只有上一级的构造器才有权限初始化上一级自有的实例域。导出类构造器会默认调用基类的默认构造器,除非用super()指定。

    更纯粹的继承就是基类与导出类的方法完全一样,这种关系是is-a关系,但更灵活的方式是导出类扩展方法,这被称为is-like-a关系,但扩展出来的方法并不能在向上转型后被使用,若要使用,只能向下转型,这将涉及到RTTI。

  • 相关阅读:
    Gym
    数学公式头文件
    除法取模(比赛常用)
    ACM-ICPC 2017 Asia Urumqi A. Coins【期望dp】
    P1494 小Z的袜子 【普通莫队】
    Codeforces Round #642 (Div. 3) E—K-periodic Garland dp
    luogu P4568 [JLOI2011]飞行路线 最短路Dijkstra+dp
    luogu P2015 二叉苹果树 树形dp
    luogu P1462 通往奥格瑞玛的道路 二分+spfa
    luogu P1879 [USACO06NOV]Corn Fields G 状态压缩dp
  • 原文地址:https://www.cnblogs.com/liuzey/p/8832232.html
Copyright © 2020-2023  润新知