私は以下のように、基本クラス過ごしていた場合:リアルタイムでC#の仮想メソッドと新しいメソッドをオーバーライドする方法は何ですか?
class A
{
public virtual void print()
{
Console.WriteLine("Base class method");
Console.Read();
}
}
を、以下のような基本クラスから継承した派生クラス:オブジェクトを作成するために
class B : A
{
public override void print()
{
Console.WriteLine("Child Class Method");
Console.Read();
}
}
主な方法は以下の通りです:
class Method
{
static void Main(string[] args)
{
A obj=new B();
obj.Print();
}
}
上記のコードは、子クラスのメソッドを呼び出します。しかし、私がB obj=new B()
のようなオブジェクトを作成し、 'obj.Print()'を行ったとしても、同じ出力がレンダリングされます。
したがって、上記のようなA obj=new B()
と呼び出し方法のようなオブジェクトの作成は何ですか?私は以下のように派生クラスのメソッドを変更した場合
一方、:
public new void print()
{
Console.WriteLine("Child Class Method");
Console.Read();
}
そして、もしA obj=new B()
は、その後、obj.print()
は、基本クラスのメソッドを呼び出しますか。同じ場合はA obj=new A()
とobj.print()
です。
だから、派生参照クラスオブジェクトを指し、上記のようなメンバーを呼び出す基本クラス参照変数を持つ点は何ですか?どのシナリオでこのロジックを使用すべきですか?
'B'クラスのメソッド名は' PrintMaessage'ですか?明らかに、あなたが 'obj.Print()'を呼び出すと、それが呼び出されることはありません。 –
1ワード:多型。 – Spivonious
@ IanMcLaird - もちろんです。私は投稿を編集しました。 – Abhi