アカウント名:
パスワード:
ぜんぶ作って抱え込めばいいじゃん。
C++ のWebフレームワークやってますって人誰か居ないかね。普通に使えるよー、とかやっぱマゾですわー、とか聞いてみたい。
???「C++、聞こえていたら君の生まれの不幸を呪うがいい」???「君は良い言語だったが、多重継承がいけないのだよ」
よくC++は多重継承が・・・って言う人いますけどJavaのインターフェースは多重継承の一種なんですよね。
継承に関してC++にあって(7以前の)Javaに無いのは実装の多重継承だけで、型の多重継承とでも言うべきインターフェースの多重継承はJavaも許しています。多重継承の欠点として関数名の衝突やダイヤモンド継承がよく挙げられますが、これらはインターフェースを通してJavaでも起こり得ることです。
そこでJavaは実装の継承を一つに限ることで問題を回避しようとしているわけですが、一般に同名関数の意味が一致することは期待できないはずです。例えば、ゲーム内の車両を
同一名、同一パラメータを定義した別のInterfaceを、同一クラスに導入できましたっけ?Javaはクラス内に同一名、同一パラメータのメソッドを定義するとコンパイルエラーになるので不可能だと思いますが。
http://ideone.com/Bx68wr [ideone.com]関数名の衝突はこういうことでしょ。Bは別のinterfaceにしてCでAを定義でもいいけど。BのAを定義したときにIのinterfaceとしてのAとして定義したわけじゃない。
ダイヤモンド継承の問題はJavaでは無いな。
その例だとメソッドのスコープが違うのでいわゆる多重継承の問題は起きていないんでないかな?多重継承問題は継承した複数の基底クラスに同一メソッドが存在し得て、どの基底クラスのメソッドを呼んでるか一意に決まらない事だから。C.A()を実装してCからA()をコールしたらthis.A()がコールされることが一意に決まる。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
Stableって古いって意味だっけ? -- Debian初級
男は黙ってC++ (スコア:0)
ぜんぶ作って抱え込めばいいじゃん。
Re: (スコア:0)
C++ のWebフレームワークやってますって人誰か居ないかね。
普通に使えるよー、とかやっぱマゾですわー、とか聞いてみたい。
Re: (スコア:0)
???「C++、聞こえていたら君の生まれの不幸を呪うがいい」
???「君は良い言語だったが、多重継承がいけないのだよ」
Javaは多重継承を許している (スコア:2, すばらしい洞察)
よくC++は多重継承が・・・って言う人いますけど
Javaのインターフェースは多重継承の一種なんですよね。
継承に関してC++にあって(7以前の)Javaに無いのは実装の多重継承だけで、
型の多重継承とでも言うべきインターフェースの多重継承はJavaも許しています。
多重継承の欠点として関数名の衝突やダイヤモンド継承がよく挙げられますが、
これらはインターフェースを通してJavaでも起こり得ることです。
そこでJavaは実装の継承を一つに限ることで問題を回避しようとしているわけですが、
一般に同名関数の意味が一致することは期待できないはずです。
例えば、ゲーム内の車両を
Re:Javaは多重継承を許している (スコア:0)
同一名、同一パラメータを定義した別のInterfaceを、同一クラスに導入できましたっけ?
Javaはクラス内に同一名、同一パラメータのメソッドを定義するとコンパイルエラーになるので不可能だと思いますが。
Re: (スコア:0)
http://ideone.com/Bx68wr [ideone.com]
関数名の衝突はこういうことでしょ。Bは別のinterfaceにしてCでAを定義でもいいけど。
BのAを定義したときにIのinterfaceとしてのAとして定義したわけじゃない。
ダイヤモンド継承の問題はJavaでは無いな。
Re: (スコア:0)
その例だとメソッドのスコープが違うのでいわゆる多重継承の問題は起きていないんでないかな?
多重継承問題は継承した複数の基底クラスに同一メソッドが存在し得て、どの基底クラスのメソッドを呼んでるか一意に決まらない事だから。
C.A()を実装してCからA()をコールしたらthis.A()がコールされることが一意に決まる。