zoukankan      html  css  js  c++  java
  • Java学习记录-4.多态

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

    向上转型

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

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

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

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

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

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

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

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

  • 相关阅读:
    数据库设计优化(一)--基础
    数据库设计--范式原则
    迭代器 与 foreach 的区别
    DBeaver中如何调整SQL编辑器的字体大小
    腾讯课堂下载回放视频
    超级美味的大盘鸡做法
    关闭或开启Win10系统的自动更新
    geoserver发布地图瓦片影像数据
    使用GeoServer发布Shapfile数据
    GeoServer下载与安装(Windows版)
  • 原文地址:https://www.cnblogs.com/liuzey/p/8832232.html
Copyright © 2011-2022 走看看