http://blogs.wankuma.com/rti/archive/2007/08/02/88399.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門5
http://blogs.wankuma.com/rti/archive/2007/07/31/87955.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門4
http://blogs.wankuma.com/rti/archive/2007/07/30/87742.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門3
http://blogs.wankuma.com/rti/archive/2007/07/26/87105.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門2
http://blogs.wankuma.com/rti/archive/2007/07/25/86988.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門1
の続きです。
どこからフォローすれば良いのかわからないので、先頭から順に行ってます。
今回は
オーバーライドする
というテーマです。
早速、毎度おなじみのR・田中一郎クラスのC#でのコードを再度登場させます。
public class R・田中一郎 {
public string 会員番号 { get { return "34"; }}
public string 名前 { get { return "R・田中一郎"; }}
public string 年齢 { get { return "18"; }}
public string 職業 { get { return "IT関係"; }}
public string 印象 { get { return "素敵だし爽やか"; }}
public void 自己紹介(){
Console.Writeline(
"オブジェクト指向ファンの皆さん、こんにちは。" +
"わんくま会員番号" + this.会員番号 + "番の" + this.名前 + "です。" +
"年齢は、" + this.年齢 + "才。職業は、" + this.職業 "です。" +
"今日は、オブジェクト指向ファンの皆さんを前にして、" +
this.印象 + "な僕が、オブジェクト指向について語るということで、" +
"些かガクブルな状態ではありますが、早速はじめたいと思います。"
);
}
}
この自己紹介メソッドですが、良く見るとオブジェクト指向ファンの皆さんと書いてあります。
これでは、別の機会で自己紹介するときには利用できません。
しかし、以前にも言った通り、オブジェクト指向プログラミングというものは、コード資産を徹底的に再利用するできることがメリットのひとつです。
それに、自己紹介メソッドを除いたメンバは、そのまま流用できそうです。
そこで、前回説明した継承を使って、R・田中一郎クラスを継承した新しいクラスを作って、自己紹介メソッドを上書きしてしまえば良いですね。
以下は、R・田中一郎クラスを継承したR・田中二郎クラスで自己紹介メソッドをオーバーライドしたコードです。
public class R・田中一郎 {
public string 会員番号 { get { return "34"; }}
public string 名前 { get { return "R・田中一郎"; }}
public string 年齢 { get { return "18"; }}
public string 職業 { get { return "IT関係"; }}
public string 印象 { get { return "素敵だし爽やか"; }}
public void virtual 自己紹介(){
Console.Writeline(
"オブジェクト指向ファンの皆さん、こんにちは。" +
"わんくま会員番号" + this.会員番号 + "番の" + this.名前 + "です。" +
"年齢は、" + this.年齢 + "才。職業は、" + this.職業 "です。" +
"今日は、オブジェクト指向ファンの皆さんを前にして、" +
this.印象 + "な僕が、オブジェクト指向について語るということで、" +
"些かガクブルな状態ではありますが、早速はじめたいと思います。"
);
}
}
public class R・田中二郎 : R・田中一郎 {
public void override 自己紹介(){
Console.Writeline(
“構造化プログラミングファンの皆さん、こんにちは。" +
"わんくま会員番号" + this.会員番号 + "番の" + this.名前 + "です。" +
"年齢は、" + this.年齢 + "才。職業は、" + this.職業 "です。" +
"今日は、オブジェクト指向ファンの皆さんを前にして、" +
this.印象 + “な僕が、構造化プログラミングについて語ります。”
);
}
}
まずは、R・田中一郎クラスを見て下さい。
先ほどの説明のように、自己紹介メソッドは、継承されたクラスで独自に設定されることが多いだろうことが予想できます。
C# では、そういったメンバにバーチャルというキーワードを記述します。
これによって、継承したクラスでは自己紹介メソッドを必要に応じてオーバーライドができます。