[英]Calling abstract method from an object of derived/base class
我是C#的初学者,正在尝试继承。 ClassA是基类,而classB和classC则是从classA派生的。 我的Program类具有静态方法Show()。 起初,我不确定是否要返回objectB或objectC。 所以我不知道方法Show()的返回类型是什么。 将返回类型设置为基类即classA首先解决了我的问题,但是当我尝试在Main中访问MyMethod时会抛出错误,因为MyMethod在classA中声明为abstract。 如何在返回的对象上调用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();
}
}
您应该将MyMethod公开。
abstract class classA
{
public abstract void MyMethod();
// other fields and methods
}
internal class classB : classA
{
public override void MyMethod()
{
//logic
}
}
internal class classC : classA
{
public override void MyMethod()
{
//logic
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.