多态性vs覆盖vs重载

a 夏天 提交于 2020-03-05 16:00:02

就Java而言,当有人问:

什么是多态性?

重载重载是可以接受的答案吗?

我认为还有更多。

如果您有一个抽象基类,它定义了一个没有实现的方法,并且您在子类中定义了该方法,那该方法是否仍然覆盖?

我认为过载不是肯定的正确答案。


#1楼

就其含义而言,多态性更有可能...在Java中覆盖

这都是关于SAME对象在不同情况下的不同行为(以编程方式...您可以调用不同的ARGUMENTS)

我认为以下示例将帮助您理解...尽管不是纯Java代码...

     public void See(Friend)
     {
        System.out.println("Talk");
     }

但是,如果我们更改ARGUMENT ...的行为将被更改...

     public void See(Enemy)
     {
        System.out.println("Run");
     }

人员(此处为“对象”)是相同的...


#2楼

多态性是指不止一种形式,同一对象根据需要执行不同的操作。

多态可以通过两种方式实现,即

  1. 方法覆盖
  2. 方法重载

方法重载是指使用相同的方法名称在同一类中编写两个或多个方法,但是传递的参数不同。

方法覆盖意味着我们在不同的类中使用方法名称,这意味着在子类中使用父类方法。

在Java中,为了实现多态性,超类引用变量可以保存子类对象。

为了实现多态,每个开发人员必须在项目中使用相同的方法名称。


#3楼

重载一词是指具有相同名称的某些事物的多个版本,通常是具有不同参数列表的方法

public int DoSomething(int objectId) { ... }
public int DoSomething(string objectName) { ... }

因此,这些功能可能会执行相同的操作,但是您可以选择使用ID或名称来调用它。 与继承,抽象类等无关。

如您在问题中所述,重载通常是指多态性


#4楼

您是正确的,过载不是答案。

两者都不是最重要的。 覆盖是获得多态的手段。 多态是对象根据其类型改变行为的能力。 当显示多态性的对象的调用者不知道该对象是哪种特定类型时,最好地证明这一点。


#5楼

重载是当您定义两个具有相同名称但参数不同的方法时

覆盖是通过子类中具有相同名称的函数更改基类的行为的地方。

因此,多态与覆盖有关,但实际上与过载无关。

但是,如果有人对“什么是多态性”这个问题给了我一个简单的“覆盖”答案。 我要求进一步解释。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!