未分類

C# オーバーライドを考える

準備

(なし)

デザイン

1. フォーム (Form1) にボタン (button1) を配置します。
2. フォーム (Form1) にリストボックス (listBox1) を配置します。

サンプルコード (C#)

// 名前空間の追加
// (なし)

// クラスの宣言
public class TestClass1
{
}

public class TestClass2
{
  public override string ToString()
  {
    return "Hello, World!";
  }
}

public class TestClass3
{
  public new string ToString()
  {
    return "Hello, Japan!";
  }
}

// コード
private void button1_Click(object sender, EventArgs e)
{
  TestClass1 tc1 = new TestClass1();
  listBox1.Items.Add(tc1.ToString());
  
  TestClass2 tc2 = new TestClass2();
  listBox1.Items.Add(tc2.ToString());
  
  TestClass3 tc3 = new TestClass3();
  listBox1.Items.Add(tc3.ToString());
}

解説

TestClass1 は単にクラスを作成したものです。このクラスのインスタンスの ToString メソッドを実行すると、継承元の Object クラスの ToString メソッドが実行されます。

TestClass2 は ToString メソッドを実装して、Object の ToString メソッドをオーバーライドしています。このクラスのインスタンスの ToString メソッドを実行すると、継承元の Object クラスの ToString メソッドをオーバーライドした ToString メソッドが実行されます。

TestClass3 は ToString メソッドを実装していますが、Object の ToString メソッドをオーバーライドしていません。このクラスのインスタンスの ToString メソッドを実行すると、継承元の Object クラスの ToString メソッドとは無関係に実装している ToString メソッドが実行されます。

結果

動作確認環境

Visual Studio 2015 Professional (C# 6.0)

-未分類