java:方法覆盖与方法重载

栏目: Java · 发布时间: 6年前

内容简介:方法签名是指方法的参数类型,顺序和个数.不包含方法名称.重载必须满足以下条件如果在子类中定义的一个方法,其名称,返回类型及参数签名正好与父类中某个方法的名称、返回类型及参数签名相匹配,那么子类覆盖了父类的方法。

方法签名

方法签名是指方法的参数类型,顺序和个数.不包含方法名称.

重载

重载必须满足以下条件

  • 方法名 相同
  • 方法的参数类型,个数和顺序至少一项不同
  • 方法的返回类型可以不同
  • 方法的访问权限修饰符可以不同

覆盖

如果在子类中定义的一个方法,其名称,返回类型及参数签名正好与父类中某个方法的名称、返回类型及参数签名相匹配,那么子类覆盖了父类的方法。

覆盖必须满足以下条件:

  • 子类方法的名称、参数签名和返回类型必须与父类方法保持一致。
  • 子类方法不能缩小父类方法的访问权限。

    如果没有这个限制,会与 java 语言的多态机制发生冲突。

    //创建父类型的变量,引用子类的实例
      Parent parent = new Child();
      //调用的是子类实例的方法,如果子类覆盖这个方法时,缩小了访问权限,可能会造成无法访问到子类实例的这个方法
      parent.method();
  • 子类方法不能抛出比父类方法更多的异常.子类方法抛出的异常必须与父类方法抛出的异常相同,或者父类方法抛出的异常类是父类方法抛出异常类的子类.
  • 方法覆盖只存在于子类和父类(包括直接父类和间接父类)之间.在同一个类中方法只能被重载,不能被覆盖.
  • 父类的静态方法不能被子类覆盖为非静态方法.
  • 父类的非静态方法不能被子类覆盖为静态方法
  • 父类的私有方法不能被子类覆盖
  • 父类的非抽象方法可以被子类覆盖为抽象方法

异同

  1. 相同点

    • 方法名要保持一致
  2. 不同点

    • 方法覆盖要求参数签名一致,而方法重载要求参数签名必须不一致.
    • 覆盖要求返回类型一致,或者子类方法返回类型小于父类方法,重载对此不做限制.
    • 覆盖只能用于子类覆盖父类的方法,重载用于同一个类的所有方法(包括从父类中继承而来的方法).
    • 覆盖对方法的访问权限和抛出异常有要求,重载不做限制.
    • 父类的一个方法只能被子类覆盖一次,而一个方法在所在的类中可以被重载多次.

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

社交电商

社交电商

[美] Stephan Spencer(斯蒂芬.斯宾塞)、[美] Jimmy Harding(吉米.哈丁)、[美] Jennifer Sheahan(詹尼弗.希汉) / 谭磊 / 电子工业出版社 / 2015-3 / 69.00元

你想要在互联网上赚钱吗?想要做好电子商务吗?那么你一定不能忽视社交媒体的力量。不管你想要营销的是实物商品、电子类产品还是本地的服务,这本书会教你怎么做。 《社交电商》全面介绍形形色色的社交媒体以及如何利用这些社交媒体来为你的企业做好服务。如果你经营得不好,在社交媒体上散发出的只是噪声而不是真正的信息。 而如果做得好,社交媒体会成为你最有效的营销工具,帮助你赢得老客户的拥戴,获得新的客户。 ......一起来看看 《社交电商》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具