gpt4 book ai didi

c# - 如何在 C# 中实现与在 Java 中相同的覆盖体验?

转载 作者:搜寻专家 更新时间:2023-10-31 08:11:03 25 4
gpt4 key购买 nike

考虑以下 Java 代码:

public class overriding {
public static void main(String[] args) {
b b = new b();
a a = (a)b;
a.Info();
b.Info();
}
}

class a {
void Info() {
System.out.println("I'm a");
}
}

class b extends a {
void Info() {
System.out.println("I'm b");
}
}

现在让我们尝试在 C# 中做同样的事情

namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
b b = new b();
a a = (a)b;
a.Info();
b.Info();
Console.ReadLine();
}
}

class a
{
public void Info()
{
Console.WriteLine("I'm a");
}
}

class b : a
{
public void Info()
{
Console.WriteLine("I'm b");
}
}
}

Java 示例输出

I'm b

I'm b

C#版本输出

I'm a

I'm b

有没有办法实现类 b 以便它打印两次“I'm b”?请注意,我不是在寻找改变 a 的方法。

最佳答案

在 Java 中,方法默认是虚拟的。在 C# 中它们不是,您需要分别对类 a 和 b 中的方法声明使用关键字“virtual”和“override”。

关于c# - 如何在 C# 中实现与在 Java 中相同的覆盖体验?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17722136/

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