Java中的方法重载与重写

举报
宇宙之一粟 发表于 2022/02/27 21:00:22 2022/02/27
【摘要】 Java中的方法重载与重写重载:发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。参数列表不同(个数、顺序、类型)和方法的返回值类型无关。重写:重写发生在子类与父类之间,子类重新定义了父类的方法。重写要求子类按照父类被重写方法有相同的方法名、参数列表和返回类型。不能存在同一个类中,在继承或实现关系的类中。 方法重载又可称为什么?方法重载也称为静态多态。 如何实现方法重载?...

Java中的方法重载与重写

重载

  • 发生在同一个类里面两个或者是多个方法的方法名相同但是参数不同的情况。
  • 参数列表不同(个数、顺序、类型)和方法的返回值类型无关。

重写

  • 重写发生在子类与父类之间,子类重新定义了父类的方法。
  • 重写要求子类按照父类被重写方法有相同的方法名、参数列表和返回类型。
  • 不能存在同一个类中,在继承或实现关系的类中。

方法重载又可称为什么?

方法重载也称为静态多态。

如何实现方法重载?

在Java中,一个类可以具有名称相同但参数不同的多个方法。 这称为方法重载。 要实现方法重载,我们必须在一个类中创建两个具有相同名称的方法,并执行以下一项/多项操作:
1.不同数量的参数
2.不同数据类型的参数
3.参数数据类型的不同顺序

方法重载允许哪些类型的参数变体?

方法重载允许两个具有相同名称的方法在以下方面有所不同:
1.参数数量
2.参数的数据类型
3.参数的数据类型顺序

为什么不能通过更改Java中方法的返回类型来进行方法重载?

如果我们更改重载方法的返回类型,则将导致模棱两可的行为。 客户将如何知道哪种方法将返回哪种类型。 由于这种不同,重载方法中不允许使用不同的返回类型。

是否可以在Java中重载main()方法?

是的,Java允许用户创建许多同名“ main”的方法。 但是只有公共静态void main(String [] args)方法用于执行。

我们如何在Java中实现方法重写?

为了覆盖一个方法,我们只是在子类中提供了一个具有相同名称的方法的新实现。 因此,至少有两个具有相同名称的方法的实现。 一种实现是在父类中。 另一个实现是在子类中。

是否允许重写Java中的静态方法?

否。Java不允许覆盖静态方法。 如果在子类中创建一个具有相同名称的静态方法,则它是一个新方法,而不是覆盖的方法。

为什么Java不允许重写静态方法?

要重写方法,您需要一个类的实例。 静态方法不与该类的任何实例关联。 因此,静态的概念不适用于此处。
因此,Java不允许重写/覆盖静态方法。

是否可以重写重载方法?

是。 您可以重写Java中的重载方法。

方法重载和方法重写之间有什么区别?

方法重载和覆盖之间的区别是:
1.方法重载是静态多态性。 方法重写是运行时多态。
2.方法重载发生在同一类中。 方法覆盖发生在两个具有层次关系的类中。
3.方法重载中的参数必须不同。 方法覆盖中的参数必须相同。
4.方法重载是一个编译时概念。 方法重写是运行时概念。

Java中的协变返回类型是什么意思?

方法的协变返回类型是一种在子类中重写该方法时可以用“更窄”类型替换的方法。
假设类 B 是类 A 的子类。类 A 和类 B 中都有一个 get()方法。
类 A 的 get() 方法可以返回 A 的实例,而类 B 的 get()方法可以返回 A 的实例和 B 的实例。在这里,类 B 覆盖了 get() 方法,但是返回类型不同。

在 Java 5 之前,任何覆盖父类方法的方法都将具有相同的返回类型。
从 Java 5 开始,子类可以覆盖父类的方法,并且子类方法可以返回作为父类方法返回的对象的子对象的对象。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。