我是 C# 的初学者,正在尝试继承。ClassA 是基类,而 classB 和 classC 是从 classA 派生的。我的 Program 类有静态方法 Show()。起初我不确定我会返回 objectB 还是 objectC。所以我不知道 Show() 方法的返回类型应该是什么。将返回类型设置为基类,即 classA 一开始解决了我的问题,但是当我尝试在 Main 中访问 MyMethod 时,它会抛出错误,因为 MyMethod 在 classA 中被声明为抽象。如何在返回的对象上调用 MyMethod?
abstract class classA
{
protected abstract void MyMethod();
// other fields and methods
}
class classB: classA
{
protected override MyMethod()
{
//logic
}
}
class classC: classA
{
protected override MyMethod()
{
//logic
}
}
class Program
{
public static classA Show()
{
if(condition)
{ //logic
return objectB; //objectB is instantiated from classB
}
else
{//logic
return objectC; //objectC is instantiated from classC
}
}
static void Main(string[] args)
{
ClassA myObject = Show();
myObject.MyMethod();
}
}