私は2つのクラス、基本クラス、人を定義します。派生クラスの顧客。派生クラスの では、display()メソッドを書き換えます。 しかし、私は顧客のインスタンスで基本クラス(人)の表示メソッドを呼び出す必要があります。 どうすれば対応できますか?C#で派生クラスで既にオーバーライドされている基本クラスメソッドを呼び出す方法
私はmsdnで知っているbase()
を使用して起動するいくつかの例がありますが、私の質問はクラス定義ではなく、インスタンスの呼び出しで呼び出されます。私はそれが違うと思う。
public override void DisplayInfo()
{
//call base method
base.DisplayInfo();
//add your extra code here
}
あなたが実行しなくても、あなたの基本メソッドを実行する場合:あなたは基本メソッドをオーバーライドするとき
using System;
using System.Text;
class Program
{
static void Main(string[] args)
{
person myperson = new person();
myperson.DisplayInfo();
customer mycustomer = new customer();
mycustomer.DisplayInfo();
// --here I want to invoke person.display(). how to realize it?
//mycustomer.base.DisplayInfo();
}
public class person
{
public string Name="base name";
public virtual string DisplayInfo()
{
string msg = Name;
Console.WriteLine(msg);
return msg;
}
}
public class customer : person
{
public new void DisplayInfo()
{
Console.WriteLine("derive "+ Name);
}
}
}
「上書き」ではなく「新」を使用しますか? – zerkms
'DisplayInfo' –
に' new'を使うのは避けてください。しかし、私はクラス定義では呼び出されませんが、インスタンス呼び出しでは--- "あなたはそれで解決している本当の問題は何ですか?それは最初のところでは悪い考えのように聞こえる。 – zerkms