gpt4 book ai didi

c# - 方法继承说明

转载 作者:太空宇宙 更新时间:2023-11-03 10:50:21 26 4
gpt4 key购买 nike

面试官问了我下面的问题

public class A
{
public string GetName()
{
return "A";
}
}

public class B : A
{
public string GetName()
{
return "B";
}
}
public class C : B()
{
public string GetName
{
return "C";
}
}

的输出是什么
A a = new A();
a.GetName();

a = new B();
a.GetName();

a = new C();
a.GetName();

我说过所有人都会给“A”。然后他说我需要纠正我的基础知识。

最佳答案

你的回答是正确的;由于缺少 virtualoverride 关键字,因此没有应用方法覆盖。

所以在所有三种情况下,它都返回输出 A

如果你想应用适当的方法覆盖,你需要将 virtual 应用到基类方法,并将 override 应用到你覆盖基类​​方法的子类方法.

试试这个:

class Program
{
static void Main(string[] args)
{
A a = new A();
Console.WriteLine(a.GetName());

a = new B();
Console.WriteLine(a.GetName());

a = new C();
Console.WriteLine(a.GetName());
}
}
public class A
{
public virtual string GetName()
{
return "A";
}
}

public class B : A
{
public override string GetName()
{
return "B";
}
}
public class C : B
{
public override string GetName()
{
return "C";
}
}

输出:

A
B
C

关于c# - 方法继承说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21643043/

26 4 0
文章推荐: python - 在 PYTHONPATH 中同时包含一个包及其子包会发生什么情况?
文章推荐: php - 从 Mysql 中检索日期倒置
文章推荐: python - 比较两个列表并找到唯一值
文章推荐: java - 使用 JdbcTemplate 将关系数据库映射到每个包含一个 List 的 List