R.Tanaka.Ichiro's Blog

主にC# な話題です

目次

Blog 利用状況

ニュース

R流、一瞬でわかる.NETオブジェクト指向プログラミング入門10

http://blogs.wankuma.com/rti/archive/2007/08/14/90238.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門9

http://blogs.wankuma.com/rti/archive/2007/08/10/89801.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門8

http://blogs.wankuma.com/rti/archive/2007/08/08/89397.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門7

http://blogs.wankuma.com/rti/archive/2007/08/07/89226.aspx
R流、一瞬でわかる.NETオブジェクト指向プログラミング入門6

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

の続きです。

どこからフォローすれば良いのかわからないので、先頭から順に行ってます。

今回は

System.Object

の継承は省略できます

というテーマです。

以前、全てのクラスは、Object クラスを継承していると言う説明をしました。
現実の世界でも、人物、動物、植物、製造物、危険物というように、世の中には物という基本の上にあります。

さて、毎度おなじみの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 = new R・田中一郎();
Console.WriteLine(r.ToString());


ToString() メソッドなんて、R・田中一郎クラスのどこにも実装されていません。
何故でしょうか?

これは、ToString() メソッドが、System.Object クラスのメンバだからです。
つまりこれは、System.Objectクラスを継承している証拠になります。

では、何故明示的に何も継承していないR・田中一郎クラスが、System.Object クラスを継承しているのでしょうか?

答えは簡単で、System.Object クラスの継承は省略できるからなのです。
上記のクラスは、以下のように書いたことと同じ扱いになります。


public class R・田中一郎 : System.Object {


このことから「System.Object クラスを除く全てのクラスは、別のクラスを継承している」ということになります。
そして、その継承元となっているクラスを辿っていくと、必ず System.Object クラスを継承していることになります。

投稿日時 : 2007年8月20日 13:47

Feedback

# R流、一瞬でわかる.NETオブジェクト指向プログラミング入門11 2007/08/27 15:39 R.Tanaka.Ichiro's Blog

R流、一瞬でわかる.NETオブジェクト指向プログラミング入門11

# R流、一瞬でわかる.NETオブジェクト指向プログラミング入門12 2007/08/28 13:56 R.Tanaka.Ichiro's Blog

R流、一瞬でわかる.NETオブジェクト指向プログラミング入門12

# R流、一瞬でわかる.NETオブジェクト指向プログラミング入門12 2007/08/28 14:40 R.Tanaka.Ichiro's Blog

R流、一瞬でわかる.NETオブジェクト指向プログラミング入門12

# R流、一瞬でわかる.NETオブジェクト指向プログラミング入門13 2007/08/31 14:29 R.Tanaka.Ichiro's Blog

R流、一瞬でわかる.NETオブジェクト指向プログラミング入門13

# R流、一瞬でわかる.NETオブジェクト指向プログラミング入門14 2007/09/06 14:07 R.Tanaka.Ichiro's Blog

R流、一瞬でわかる.NETオブジェクト指向プログラミング入門14

# I was recommended this website by my cousin. I am not sure whether this post is written by him as no one else know such detailed about my difficulty. You're amazing! Thanks! lag din egen fotballdrakt 2017/07/04 5:56 I was recommended this website by my cousin. I am

I was recommended this website by my cousin. I am not sure
whether this post is written by him as no one else know such detailed about my difficulty.
You're amazing! Thanks!
lag din egen fotballdrakt

タイトル
名前
Url
コメント