搜索
首页Javajava教程Java中方法覆盖与方法重载的对比介绍

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

方法签名

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

重载

重载必须满足以下条件

方法名 相同

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

方法的返回类型可以不同

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

覆盖

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

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

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

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

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

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

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

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

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

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

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

异同

1、相同点

方法名要保持一致

2、不同点

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

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

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

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

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

以上是Java中方法覆盖与方法重载的对比介绍的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:segmentfault。如有侵权,请联系admin@php.cn删除

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前By尊渡假赌尊渡假赌尊渡假赌
威尔R.E.P.O.有交叉游戏吗?
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript开发工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版