gpt4 book ai didi

java - 相同的代码但不同的输出 c# vs java 使用多态性?

转载 作者:行者123 更新时间:2023-11-30 06:55:13 25 4
gpt4 key购买 nike

我一直在研究多态性概念。我认为所有 OOP 概念在每种语言中都是相同的(几乎)。我编译并运行了这段代码,但 java 和 c# 给出了不同的答案:

public class Employee
{
// constructor implemented
public void mailCheck()
{
Console.WriteLine("In Employee Method\n Mailing a check to "+ this.name+ " " + this.address);
}

}

public class Salary : Employee
{
//constructor implemented
public void mailCheck()
{
Console.WriteLine("Within mailCheck of Salary class ");
Console.WriteLine("Mailing check to " + getName() + " with salary " + salary);
}
}

class driver
{
static void Main(string[] args)
{

Employee e = new Salary("John Adams", "Boston, MA", 2, 2400.00);
e.mailCheck();
}
}

如果我在 java 中运行这段代码,它会调用 salary 类方法,如果我在 c# 中运行这段代码,它会调用 employee 类方法。

为什么会这样?

最佳答案

在 Java 中,您不必编写 @Override为了覆盖具有相同签名的方法。这就像默认情况下。在 C# 中不是这种情况,因为您必须前缀 virtual
(public virtual void mailCheck()) 以表示该方法将被覆盖。

这就是您在两种语言之间获得不同输出的原因。

关于java - 相同的代码但不同的输出 c# vs java 使用多态性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35525601/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com