• 技术文章 >Java >java教程

    Java中方法覆盖与方法重载的对比介绍

    不言不言2019-02-11 11:13:31转载937

    本篇文章给大家带来的内容是关于Java中方法覆盖与方法重载的对比介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

    方法签名

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

    重载

    重载必须满足以下条件

    方法名 相同

    方法的参数类型,个数和顺序至少一项不同

    方法的返回类型可以不同

    方法的访问权限修饰符可以不同

    覆盖

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

    子类方法的名称、参数签名和返回类型必须与父类方法保持一致。

    子类方法不能缩小父类方法的访问权限。

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

      //创建父类型的变量,引用子类的实例
      Parent parent = new Child();
      //调用的是子类实例的方法,如果子类覆盖这个方法时,缩小了访问权限,可能会造成无法访问到子类实例的这个方法
      parent.method();

    子类方法不能抛出比父类方法更多的异常.子类方法抛出的异常必须与父类方法抛出的异常相同,或者父类方法抛出的异常类是父类方法抛出异常类的子类.

    方法覆盖只存在于子类和父类(包括直接父类和间接父类)之间.在同一个类中方法只能被重载,不能被覆盖.

    父类的静态方法不能被子类覆盖为非静态方法.

    父类的非静态方法不能被子类覆盖为静态方法

    父类的私有方法不能被子类覆盖

    父类的非抽象方法可以被子类覆盖为抽象方法

    异同

    1、相同点

    方法名要保持一致

    2、不同点

    方法覆盖要求参数签名一致,而方法重载要求参数签名必须不一致.

    覆盖要求返回类型一致,或者子类方法返回类型小于父类方法,重载对此不做限制.

    覆盖只能用于子类覆盖父类的方法,重载用于同一个类的所有方法(包括从父类中继承而来的方法).

    覆盖对方法的访问权限和抛出异常有要求,重载不做限制.

    父类的一个方法只能被子类覆盖一次,而一个方法在所在的类中可以被重载多次.

    以上就是Java中方法覆盖与方法重载的对比介绍的详细内容,更多请关注php中文网其它相关文章!

    声明:本文转载于:segmentfault,如有侵犯,请联系admin@php.cn删除
    专题推荐:java
    上一篇:java中强引用,软引用,弱引用和虚引用的对比介绍 下一篇:Java中String字符串运算的介绍(代码示例)
    大前端线上培训班

    相关文章推荐

    • Java中四种XML解析技术_MySQL• Java中对文件的读写操作之比较_MySQL• mysql-java中的sql语句为何会报错,而到了workbench就可以执行• 设计模式(design pattern)在Java中比较常见,在其他编程语言中也同等重要吗?• 在PHP里面有没有类似JAVA中的多层架构

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网