《编程导论(Java)·2.1.3改写(override)》

《编程导论(Java)·2.1.3改写(override)》

大家好,又见面了,我是全栈君。

《编程导论(Java)·2.1.3改写(override)》,收集override内容.


方法改写(method overriding)是指对于父类定义的一个实例方法,同意子类提供自己的实现的一种语言特性。子类的实现将改写(override)或代替(replace)父类中的实现。

改写成功必须“同一时候”满足下列条件。

  • 两者的方法签名全然同样。

方法签名(signature)指一个方法的名字和形參列表。a method’s signature is its name and the number and the type of its arguments.。而重载方法的方法签名必须不同。本质上。签名不同的方法,是两个不同的方法。

  • 返回类型必须同样或是子类。Java 5.0之前。返回类型不同将导致编译错误。Java 5.0之后,改写方法的返回类型能够是(被改写方法的返回类型的)子类。

    covariant return type

  • 方法改写时,訪问权限不能变得更加私有。不要求两者訪问修饰符同样,但假设父类的方法是包私有的,则改写的方法能够用包私有的、protected和public修饰。假设父类的方法是public,则改写的方法仅仅能用public修饰。
  • 改写的方法,不能抛出比父类方法很多其它的检查型异常

public interface Sup{   
    public void copy();
}   
class Sub implements Sup{
    @Override public void copy(){   
        System.out.println("override"); 
        throw new NullPointerException();
    }
} 

编译器无论RuntimeException。

  • 父类的方法不是final方法。final方法不可以被改写。
  • 父类的方法不是private或static方法。否则,即使编写了签名全然同样的方法。可是它们与改写机制无关

父类的private方法。子类不继承。因而对子类而言毫无意义,如同不存在。

父类的static方法foo(),假设可以继承。子类可以依照改写的要求如訪问权限更公有、返回值类型同样等,编写方法签名同样的静态方法。可是。前面不可以加@Override。

两者并列存在。方法隐藏:在子类中直接调用foo(),则运行自定义的静态方法。假设没有自定义的foo()——仅仅有一个继承于父类的static方法foo(),在子类中直接调用foo(),显然运行唯一的foo()。

所以。自定义的静态方法挡住了父类的方法。

在能够继承的前提下:

父类的实例方法。子类能够override一个实例方法,可是子类不得定义签名同样的static方法-编译错误。

父类的静态方法,子类能够编写隐藏性的静态方法,可是子类不得定义签名同样的实例方法-编译错误。

overriding与overloading

如同比較男生和女生。改写是执行时机制,而重载是编译时机制。仅仅有读源码时才有比較的价值,刻薄地说,仅仅有考试时才有比較的价值。

《编程导论(Java)·2.1.3改写(override)》

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/115495.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 比较全的机油教程(android)「建议收藏」

    比较全的机油教程(android)「建议收藏」“G”“E”“H”“T”信号完美解释移动用户:  手机的网络图标有这三种:“G,E,H  G:全称:gprs既传输速率理论的峰值为114Kbps,这是早其的无线网络传输方式。  E:全称:EDGE既传输速率在峰值可以达到384kbps,现在比较主流的无线网络传输方式。  T:全称:TD-SCDMA技术目前处于起步阶段,现在版本分为R4/R5/R6/R7。R7的理论值可以达到

    2022年10月19日
    6
  • mac os x安装教程_OS X EI Capitan

    mac os x安装教程_OS X EI Capitan【引用】Mac下面除了用dmg、pkg来安装软件外,比较方便的还有用MacPorts来帮助你安装其他应用程序,跟BSD中的ports道理一样。MacPorts就像apt-get、yum一样,可以快速安装些软件。下面将MacPorts的安装和使用方法记录在这里以备查。访问官方网站http://www.macports.org/install.php,这里提供有dmg安装和源码安装两种方式,d

    2022年9月16日
    3
  • vim 配置python3环境_vim怎么运行python

    vim 配置python3环境_vim怎么运行python1.1环境OS:CentOSLinuxrelease7.6.1810(Core)python版本:Python3.9.6需求:配置vim使能支持python程序开发的类似IDE环境,实现代码不全、语法高亮等功能。1.2检查环境1.检查vim版本,如果没有“+python3”关键字,则需要升级vim#可见vim版本为7.4[root@drp-monitor-20210426165633-mojh~]#vim–versionVIM-ViIMproved7.4(201

    2022年9月29日
    4
  • 2021年总结:缘起性空,归来不少年——回顾这荆棘的一年

    2021年总结:缘起性空,归来不少年——回顾这荆棘的一年2021年已经离去,感谢大家的陪伴和帮助,感谢家人的鼓励。转眼,这已是我在CSDN写下的第九篇年终总结,真是岁月如梭。《缘起性空,归来不少年》。是啊,归来不再少年,我已经是而立之年了。当我写下这几个字的时候,心里还沉甸甸的。曾经的我总以为,博士毕业继续回到贵州教书,陪伴家人,仍是少年,真的如此吗?或许现实将更加残忍,岁月将不饶人,这荆棘一年让我意识到,我已为人父,不再少年。

    2022年4月30日
    55
  • 【Spark亚太研究院系列】Spark道路的真正的主人-第一章 构建Spark星团(第五步)(6)

    【Spark亚太研究院系列】Spark道路的真正的主人-第一章 构建Spark星团(第五步)(6)

    2022年1月10日
    37
  • EDAS伴侣ARMS终极进化:业务监控实时无边界

    EDAS伴侣ARMS终极进化:业务监控实时无边界

    2021年9月17日
    62

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号