C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: baseとvirtual


(過去ログ 107 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■63621 / inTopicNo.1)  baseとvirtual
  
□投稿者/ co (1回)-(2012/09/14(Fri) 09:25:32)

分類:[.NET 全般] 

こんにちは。
c#において、クラスAでvirtual修飾子をつけたメソッド(名前exampleとする)を定義し、クラスAを継承したクラスBでexampleをオーバライドし、
クラスBの他のメソッドでbase.example()と呼んだ場合、オーバライドされたメソッドが実行されるのか、元の方が実行されるのかどちらでしょうか
引用返信 編集キー/
■63622 / inTopicNo.2)  Re[1]: baseとvirtual
□投稿者/ επιστημη (11回)-(2012/09/14(Fri) 09:40:26)
επιστημη さんの Web サイト
訊くまでもないでしょう。やってみたらいい。

using System;

public class A {
 public virtual void example() { Console.WriteLine("A.example()"); }
}

public class B : A {
  public override void example() { Console.WriteLine("B.example()"); }
  public void f() { base.example(); }
}

public class Program {
  public static void Main() {
    B b = new B();
    b.f();
  }
}

引用返信 編集キー/
■63626 / inTopicNo.3)  Re[1]: baseとvirtual
□投稿者/ shu (73回)-(2012/09/15(Sat) 08:27:41)
2012/09/15(Sat) 08:39:15 編集(投稿者)
No63621 (co さん) に返信
> こんにちは。
> c#において、クラスAでvirtual修飾子をつけたメソッド(名前exampleとする)を定義し、クラスAを継承したクラスBでexampleをオーバライドし、
> クラスBの他のメソッドでbase.example()と呼んだ場合、オーバライドされたメソッドが実行されるのか、元の方が実行されるのかどちらでしょうか

継承メソッド書く場合
public override void example()
{
    base.example();
    〜 継承先での処理 〜
}

というものが結構あるということは理解していますでしょうか?
もしこのbase.exampleが継承先のexampleを実行したらどうなるでしょう?

そして同じクラス内なのに同じbase.exampleの呼ばれ方が違うということはありません。

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -