就Java而言,当有人问:
什么是多态性?
重载或重载是可以接受的答案吗?
我认为还有更多。
如果您有一个抽象基类,它定义了一个没有实现的方法,并且您在子类中定义了该方法,那该方法是否仍然覆盖?
我认为过载不是肯定的正确答案。
#1楼
就其含义而言,多态性更有可能...在Java中覆盖
这都是关于SAME对象在不同情况下的不同行为(以编程方式...您可以调用不同的ARGUMENTS)
我认为以下示例将帮助您理解...尽管不是纯Java代码...
public void See(Friend)
{
System.out.println("Talk");
}
但是,如果我们更改ARGUMENT ...的行为将被更改...
public void See(Enemy)
{
System.out.println("Run");
}
人员(此处为“对象”)是相同的...
#2楼
多态性是指不止一种形式,同一对象根据需要执行不同的操作。
多态可以通过两种方式实现,即
- 方法覆盖
- 方法重载
方法重载是指使用相同的方法名称在同一类中编写两个或多个方法,但是传递的参数不同。
方法覆盖意味着我们在不同的类中使用方法名称,这意味着在子类中使用父类方法。
在Java中,为了实现多态性,超类引用变量可以保存子类对象。
为了实现多态,每个开发人员必须在项目中使用相同的方法名称。
#3楼
重载一词是指具有相同名称的某些事物的多个版本,通常是具有不同参数列表的方法
public int DoSomething(int objectId) { ... }
public int DoSomething(string objectName) { ... }
因此,这些功能可能会执行相同的操作,但是您可以选择使用ID或名称来调用它。 与继承,抽象类等无关。
如您在问题中所述,重载通常是指多态性
#4楼
您是正确的,过载不是答案。
两者都不是最重要的。 覆盖是获得多态的手段。 多态是对象根据其类型改变行为的能力。 当显示多态性的对象的调用者不知道该对象是哪种特定类型时,最好地证明这一点。
#5楼
重载是当您定义两个具有相同名称但参数不同的方法时
覆盖是通过子类中具有相同名称的函数更改基类的行为的地方。
因此,多态与覆盖有关,但实际上与过载无关。
但是,如果有人对“什么是多态性”这个问题给了我一个简单的“覆盖”答案。 我要求进一步解释。
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3188599