私はC#の初心者で、継承を試しています。ClassA は基本クラスであり、classB と classC は classA から派生しています。私の Program クラスには静的メソッド Show() があります。最初は、objectB と objectC のどちらを返すかわかりませんでした。そのため、メソッド Show() の戻り値の型がどうあるべきかわかりませんでした。戻り値の型を基本クラス、つまりclassAに設定すると、最初は問題が解決しましたが、メインの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();
}
}