2

私はすでに投稿を読みましたSO の質問を投稿するために必要な研究努力の。何百万もの質問の山にこの質問を投稿することを再び恥じています。しかし、私はまだJavaのインターフェースのアイデアを理解していません. それらには実装されていないメソッドがあり、それらが実装されているすべてのクラスに対して定義されています。私はそれについて調べました。インターフェイスは、Java で多重継承をサポートし、継承の (致命的な) ダイアモンド デスを回避するために使用されました。また、Composition vs Inheritance にも遭遇しましたが、その継承はコードの再利用ではなく、ポリモーフィズムのためのものです。したがって、拡張するクラスとして共通のコードがある場合、インターフェイスを使用するオプションを提供する多重継承のためにサポートされません(間違っている場合は修正してください)。また、ほとんどの場合、一般的な実装を定義することは不可能であることに気付きました。では、インターフェースメソッドの共通の定義(完全な汎用実装ではない)を持ち、必要に応じてそれをオーバーライドすることの問題と、Javaがそれをサポートしない理由は何ですか。例えば。インターフェイスを実装する 100 個のクラスがある場合、そのうちの 70 個は共通の実装を持ち、他のクラスは異なる実装を持ちます。70 以上のクラスのインターフェイスで共通メソッドを定義する必要があるのはなぜですか。また、それらをインターフェイスで定義してから、他の 30 クラスでオーバーライドして、70 クラスで同じコードを使用する必要がなくなるのはなぜですか。インターフェースの私の理解は間違っていますか? 70 以上のクラスのインターフェイスで共通メソッドを定義する必要があるのはなぜですか。また、それらをインターフェイスで定義してから、他の 30 クラスでオーバーライドして、70 クラスで同じコードを使用する必要がなくなるのはなぜですか。インターフェースの私の理解は間違っていますか? 70 以上のクラスのインターフェイスで共通メソッドを定義する必要があるのはなぜですか。また、それらをインターフェイスで定義してから、他の 30 クラスでオーバーライドして、70 クラスで同じコードを使用する必要がなくなるのはなぜですか。インターフェースの私の理解は間違っていますか?

4

7 に答える 7

2

そのインターフェースを実装する抽象クラスを作成し、それらのクラスにその抽象クラスを継承させることができます。これは、必要なものです。

于 2013-11-10T13:26:05.390 に答える
0

インターフェースを実装する非抽象クラスは、インターフェースからすべてのメソッドを実装する必要があります。抽象クラスはすべてのメソッドを実装する必要はありませんが、開始することはできません。例で、1 つを除くすべてのインターフェイス メソッドを実装する抽象クラスを作成する場合。これらの抽象クラスから拡張されたクラスは、まだ実装されていないメソッドを実装する必要があります。

于 2013-11-10T13:24:16.727 に答える