アカウント名:
パスワード:
クラスを覚えたての人だとガンガン継承してしまいがち継承が多段になると「結局どれが実行されてんのよ」となってしまい、見通しが悪くなるこれを起こりにくくするためと言う側面がありますc++とかだとクラスを複数継承できるので、更に複雑さアップ。枝状に別れたスーパークラスをたどっていくと同じクラスがあったりして同名のメンバ変数があるが、どっちのクラスの変数なのかなど、もうわやになってしまう
そんなわけでクラスの継承は一個にしたいでも機能は複数持たせたいそこでクラスは一つだけ継承可、その他はインタフェイスで、って形になってます純粋仮想関数だけを持つク
強制したい機能を分割できること、ですかねぇ。オブジェクト解放時に破棄したいリソースを必ず破棄させる → IDisposableオブジェクト同士で比較できる → IComparableオブジェクトを文字列として表現できる → IFormattable抽象クラスの多重継承でも良いのですが、どうせ抽象メソッドだけになるのだし。
抽象クラスはそれこそオブジェクトやクラスの抽象的表現として使いたい。
インターフェースはインターフェースでしょ。USBとか車の給油口。それを実装しているものがなんのためのものかと何を受け取って何を返すのかを表現するもの。だから抽象的には同じだが具体的には違うことを…
わざわざUSBインターフェースなんぞ使わんでもarduinoでいいんじゃね?って話でしょ。あるいはキーボードキットなんかの標準HIDデバイスキット。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
犯人はmoriwaka -- Anonymous Coward
interfaceの良さ (スコア:0)
クラスを覚えたての人だとガンガン継承してしまいがち
継承が多段になると「結局どれが実行されてんのよ」となってしまい、見通しが悪くなる
これを起こりにくくするためと言う側面があります
c++とかだとクラスを複数継承できるので、更に複雑さアップ。枝状に別れたスーパークラスをたどっていくと同じクラスがあったりして同名のメンバ変数があるが、どっちのクラスの変数なのかなど、もうわやになってしまう
そんなわけでクラスの継承は一個にしたい
でも機能は複数持たせたい
そこでクラスは一つだけ継承可、その他はインタフェイスで、って形になってます
純粋仮想関数だけを持つク
Re: (スコア:0)
強制したい機能を分割できること、ですかねぇ。
オブジェクト解放時に破棄したいリソースを必ず破棄させる → IDisposable
オブジェクト同士で比較できる → IComparable
オブジェクトを文字列として表現できる → IFormattable
抽象クラスの多重継承でも良いのですが、どうせ抽象メソッドだけになるのだし。
抽象クラスはそれこそオブジェクトやクラスの抽象的表現として使いたい。
Re: (スコア:0)
インターフェースはインターフェースでしょ。USBとか車の給油口。
それを実装しているものがなんのためのものかと何を受け取って何を返すのかを表現するもの。
だから抽象的には同じだが具体的には違うことを…
Re:interfaceの良さ (スコア:0)
わざわざUSBインターフェースなんぞ使わんでもarduinoでいいんじゃね?って話でしょ。
あるいはキーボードキットなんかの標準HIDデバイスキット。