もう、しょっちゅうゴッチャになるので、メモ残す。
「オーバーライド」と「オーバーロード」の違い。(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個存在する。
通常、同名の関数は定義できないが、型や引数が異なる場合、同名の関数を宣言することができる。
その場合、どちらの関数も存在し、呼び出すことができる。(多重定義)
まとめ
- オーバーライド = 再定義
- オーバーロード = 多重定義
一週間後にはまた忘れてそう…。