重写和重载

概念

  • 重写:又称覆盖,是子类继承父类的属性和方法后,因子类的方法可能会因子类自身特点而特殊化,但又是子类所必须具有的方法,因此通过子类继承父类后,重新写一个新的方法,来达到覆盖原有父类方法的目的。
  • 重载:在同一个类中,允许存在一个或一个以上的同名函数,只要参数类型或参数个数不同即可。

特点

  • 重写:当子类出现和父类一模一样的方法(函数)时,当子类对象调用该方法,会运行子类的方法,就像父类的方法被覆盖一样
  • 重载:仅仅同名函数,参数列表不同,返回值不必一样

目的

  • 重写:便于后期功能更新及维护,不必修改父类函数,在子类中就可以通过覆盖更新,提高了代码的拓展性。
  • 重载:方便阅读,优化了程序设计

注意点

  • 重写:
    (1)子类覆盖父类时,必须保证权限比父类大或相等,否则编译失败。如public>protected(默认状态)>private
    但当父类方法权限是private时,就算子类方法权限大于父类,由于父类私有方法不可被继承,所以子类就算有一个一模一样的方法,也不能成为覆盖,但是编译可以通过


    特殊非覆盖例子

(2)静态只能覆盖静态,不能覆盖非静态,因为在加载类的时候自动加载静态方法,优先于实例化后才可以加载的非静态方法。

  • 重载:以下情况不属于重载
void show(int a,int b)
double show(int c,char d)//不属于重载,这两种不允许出现在同一个类中,虚拟机会不知道该运行哪一个

例子

重写

  • 保留父类原有功能定义,并结合super.函数的方式升级原有功能
    super重写

重载

  • 定义的功能相同,但运算的内容不同时,因此定义一个相同名字的功能来表示如下例中的add,通过参数列表的不同来区分多个同名函数
    add

    改良后,减少代码的复用性


    add改良版
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1、方法的重写(Override)(方法覆盖) (1)重写介绍: java SE5增加@Override注解,并不...
    Hughman阅读 1,500评论 0 3
  • 重写和重载区别 重写方法的规则如下: 参数列表:必须与被重写方法的参数列表完全匹配。 返回类型:必须与超类中被重写...
    指尖的跳跃阅读 860评论 0 2
  • 首先说一下什么是重载(Overload):(1) 方法重载是让类以统一的方式处理不同类型数据的一种手段。多个同名函...
    CharmingWong阅读 521评论 0 0
  • ** 重写(overriding)特点** 父类与子类之间的多态性,对父类的函数进行重新定义。如果在子类中定义某方...
    StrongZhao阅读 433评论 0 1
  • 2016年的年初,我升级当了妈妈,上天赐予我如此珍贵的礼物,我要用所有的爱陪她长大。2016年最后一个月的第一天,...
    莎莎慢生活阅读 542评论 0 0

友情链接更多精彩内容