【C#】オーバーライドとオーバーロード

どっちかわかんなーい!

もう、しょっちゅうゴッチャになるので、メモ残す。

オーバーライド」と「オーバーロード」の違い。(C#の場合)

オーバーライド

オーバーライドは、親クラスのメソッドを再定義すること。

継承クラスで親メソッドの処理を変えたい時とかに使う。

サンプル

public class Sample
{
  public virtual void Shori()
  {
    // 処理A
  }
}

class Sample2 : Sample
{
  public override void Shori()
  {
    // 処理B
  }
}

上記の場合、Sample2クラスはSampleクラスを継承しているので、SampleクラスのShori関数にアクセスできる。

そのような関係にあるクラスで、同型同名の関数をoverride宣言することで、処理の内容を上書き(override)することができる。

処理を上書きすると、Sample2クラスでShori関数を呼び出すと、処理Aではなく、処理Bが実行される。

オーバーロード

オーバーロードは、同名のメソッドや演算子を多重定義すること。

同じ名前でも引数の入力パターンが複数あったりする関数とか、「+」で算術演算できたり文字結合できたりする。

サンプル

class Sample
{
  void Shori(int A)
  {
    // 処理A
  }

  void Shori(string B)
  {
    // 処理B
  }
}

上記の場合、Shori関数が同クラスに2個存在する。

通常、同名の関数は定義できないが、型や引数が異なる場合、同名の関数を宣言することができる。

その場合、どちらの関数も存在し、呼び出すことができる。(多重定義)

まとめ

  • オーバーライド = 再定義
  • オーバーロード = 多重定義

一週間後にはまた忘れてそう…。

投稿者: Output48

中学生の時に初めてHTMLに触れてからホームページ制作を独学で始める。 ベンチャー企業の営業、大手企業のPG・SEを経て、独立。 現在はとある企業のCTOと、変な名前の会社の社長をしてる。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください