From: matz@... (Yukihiro Matsumoto) Date: 1997-04-19T00:28:16+09:00 Subject: [ruby-list:2841] Re: class design (Re: url escape) まつもと ゆきひろです In message "[ruby-list:2840] Re: class design (Re: url escape)" on 97/04/18, 吉田芳浩 writes: |よしだ@NTT.rubyをコンパイルする環境がない(^^;  です。 gnu win32版を使えばコンパイルする必要はないですよん. |> そんなにないですよ.ただ静的型の言語ではなんらかの形で多重継 |> 承に類似した機能がないと使いものにならないことが明らかになっ |> ていますので,単純継承しかない言語であるJavaにもクラス階層を |> またがって仕様を共有するinterfaceは必須であったと思います. | |この、使いものにならないことが明らかになっている、というのはどういう |ことですか? |多重継承は機能を持っていても、使うときには気をつけよ、というのは |聞いたことがあるのですが、どういう点で多重継承(的なこと)が必要 |なのか、という観点のお話は初見なもので。 あまり上手に説明する自信がないので,わからない時にはMeyerの 「オブジェクト指向入門」でも読んでもらうとわかるのではないか と思うのですが,とりあえず説明してみます. 静的な型のあるオブジェクト指向言語では引数の型も静的に指定す る必要があります.よって,ある引数の正当な値は特定のクラスの サブクラスのインスタンスである必要があります. ここで単純継承しかない言語の場合,問題が発生することがありま す.たとえば,あるデバイスに図形を出力したいので以下のような 設計にしたとします. class Device def output(data:Output) ... end end これをみるとDeviceクラスに対して出力したいものはOutputクラス のサブクラスである必要があります.たとえばこんな感じです. class Output def output(device:Device) .. end end class Text