覆盖和重载 Java

Posted

技术标签:

【中文标题】覆盖和重载 Java【英文标题】:Overriding and Overloading Java 【发布时间】:2013-04-05 16:14:28 【问题描述】:

我有两个问题。我试图理解覆盖和重载

我们可以在不继承另一个类的情况下覆盖方法吗?为什么?

我们可以在不继承另一个类的情况下进行方法重载吗?为什么?

【问题讨论】:

而不是一般性问题:您对***和其他易于查找的网站上可用的定义有什么特别困惑?您上面的所有要求都是让我们反刍已经写过很多次的内容。 试图指导并没有帮助——这显然是一个家庭作业或面试问题,“用户”甚至不想去做最基本的搜索——事实上请注意代表——这个帐户可能只是为了问这个问题而创建的。回答这样的问题的人真的只会让事情变得更糟。 说真的。任何好的教科书或教程都会回答这些问题。答案是术语定义中固有的。你只需要仔细阅读它们。 @BillK - 实际上它并不是为了这个目的而创建的。如果您查看“他的”个人资料,那就很清楚了。但是,您对问题的描述是正确的 (IMO)。 对不起...天哪,我不会再问任何问题了。你们都错了我一直在寻找不同的地方试图找到答案,但我只是没有完全理解这个概念。我想我在来这里之前阅读了大约 10 个不同的网页。下次我会等着和我的教授谈谈 【参考方案1】:

我们可以在不继承另一个类的情况下覆盖方法吗?为什么?

没有。覆盖意味着您覆盖超类中的方法。

我们可以在不继承另一个类的情况下进行方法重载吗?为什么?

是的。重载的方法可以出现在同一个类中,但具有不同的签名。

你读过docs吗?

【讨论】:

【参考方案2】:

对第一个问题说不。 覆盖一个方法意味着你继承了一个父调用,并用你在子类中定义的方法替换它的方法实现。如果没有父方法,则不能覆盖父方法。

对第二个问题是。 重载意味着您​​有多个具有相同名称的方法,但您给它们不同的签名(参数),这样它们就不会相互冲突。这与面向对象编程无关。

【讨论】:

【参考方案3】:

我们可以在不继承另一个类的情况下覆盖方法吗?为什么?

没有。由于覆盖本身意味着覆盖行为(继承类的方法)

我们可以在不继承另一个类的情况下进行方法重载吗?为什么?

是(重载意味着提供同名不同签名的方法)

我建议您详细了解 oops 概念(包括多态性)作为 java 语言的基础

这就是你要找的东西

Overriding and Overloading

【讨论】:

【参考方案4】:

    覆盖意味着您正在处理两种方法:一种在超类中,另一种在子类中。所以,我们可以说覆盖只存在于继承类型的问题中。

    重载意味着我们在同一个类中有两个同名的方法,但这两个方法的参数类型和参数数量不同。

我希望,这很有用。美好的一天!

【讨论】:

以上是关于覆盖和重载 Java的主要内容,如果未能解决你的问题,请参考以下文章

Java中的方法覆盖(Overriding)和方法重载(Overloading)是啥意思?

为啥java中需要方法重载和覆盖? [复制]

覆盖和重载 Java

Java-重载和覆盖概念

重写(覆盖,Override)和重载(Overload)的区别

java 重载和重写的区别