From: matz@... (Yukihiro Matsumoto) Date: 1997-01-27T16:59:39+09:00 Subject: [ruby-list:1898] Kernel class (Re: Can't execute marshal) まつもと ゆきひろです. In message "[ruby-list:1896] Re: Can't execute marshal" on 97/01/27, Eiji-usagi-MATSUmoto writes: |あの、別スレッドで質問するべきなのかもしれないですが、 |もうひとつ聞いていいですか? どうぞ,どうぞ. |rubyのクラスライブラリの階層みてて思ったのですが、なぜ |Objectがトップじゃなくて、Kernelがトップなのだろうと。 なんでだったかな? ^^;;; |気持ちとしては、すべてのクラスの基底にObjectがあるのが |気持ちよさそうかな?と思ったもんで。 まず,Kernelからしか継承していないクラスはnilだけなんですが, これは大した理由ではないです.nilは機能が少なくて別にObject である必要がないからです. 実はですね.主な理由は関数メソッドとの絡みなんです. つまり,全ての関数的メソッド(openとか)はKernelのprivate methodとして定義してあります.そしてユーザがトップレベルでメ ソッドを定義するとObejctクラスにメソッドを定義します. つまり,Kernelがなく関数メソッドをObjectのメソッドとすると, ユーザが同名のメソッドを定義すると「置き換えて」しまいますが, Kernelがあるので,「再定義」できます.つまり super で呼べる わけですね. 私の記憶が正しければ,これがKernelの存在理由だったはずです. まつもと ゆきひろ /:|)