免責事項:私はこのコーディングの世界にはまったく初心者です! 私のコースではC#を学ぶ上で、私はこの記事を読んでいます。 https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/knowing-when-to-use-override-and-new-keywords。c#:継承した基本メソッドを呼び出すときの制御の流れ。派生クラスでnewとして設定された基本仮想メソッドが呼び出されます
コード:
public class Car
{
public void DescribeCar()
{
Console.WriteLine("Car: Four wheels and an engine.");
ShowDetails();
}
public virtual void ShowDetails()
{
Console.WriteLine("Car: Standard transportation.");
}
}
public class ConvertibleCar : Car
{
public new void ShowDetails()
{
Console.WriteLine("ConvertibleCar: A roof that opens up.");
}
}
ConvertibleCar myCC = new ConvertibleCar();
myCC.DescribeCar();
myCC.ShowDetails();
//Output
Car: Four wheels and an engine.
Car: Standard transportation.
ConvertibleCar: A roof that opens
が質問:出力の私の第二と第三行に:私は私の理解と期待し、私は「屋根開くよりもConvertibleCar」を取得する必要があります。 派生クラスで直接、および基本クラスのメソッド内からShowDetailsを直接呼び出す場合はどうなりますか? PS:showdetialsは、派生クラスでnewに設定されています。
私はちょうど、今、同様の問題を発見したと思い、私は今、それを通過しています。 https://stackoverflow.com/questions/17717570/why-does-calling-a-method-in-my-derived-class-call-the-base-class-method – TechieSahal
それは私を助けませんでした。 – TechieSahal
@Sweeper Rainman皆さんからのご意見が私には分かりました。 – TechieSahal