1

私が知っているように、サブクラスのコンストラクターは、を使用してスーパークラスのコンストラクターを呼び出しますsuper();。しかし、インターフェイスにはコンストラクターがないため、継承はどのように行われるのでしょうか?

4

5 に答える 5

5

しかし、インターフェイスにはコンストラクターがないため、どのように継承を行うことができますか??

簡単です。インターフェイスはインスタンス フィールドを持つことができないため、構築するものは何もありません。インターフェイスにコードを配置することはできません(とにかくJava 7まで)。呼び出す必要があるものは何もありません。

于 2013-02-05T14:23:46.023 に答える
2

インターフェイスはコントラクトであり、実装によって提供される必要があるメソッドを定義します。クラスはインターフェイスを継承しませんが、実装します。

仕様から:

この型には実装がありませんが、抽象メソッドの実装を提供することにより、無関係なクラスが実装できます。

于 2013-02-05T14:23:19.770 に答える
1

インターフェイス (サービス コントラクトとも呼ばれます) は、構築されるのではなく、実装されます。クラスが提供する一連のメソッド (サービス) を定義するため、クライアントは、インターフェイスを実装する実際の型に関係なく、実装するクラスに何が期待できるかを知ることができます。コンストラクターは、特定の型のこの特定のインスタンスに関連しており、インターフェイスを実装しています。

IYourObject yourObject = new YourObject();

一方、インターフェイスの継承も拡張によるものです。インターフェイスのメソッドを別のメソッドに「追加」し、「階層」内のさまざまなインターフェイス間でオブジェクトのインターフェイス タイプを切り替えることができるようにします。

于 2013-02-05T14:23:42.070 に答える
1

インターフェースは継承されていません - むしろ実装されています

于 2013-02-05T14:24:19.883 に答える
0

次の理由により、インターフェイスにはコンストラクターが含まれていません。

  • インターフェイスのデータ メンバは既に初期化されています。
  • 定義済みおよびさらにインターフェースデータメンバーに許可されていない特別な定義済みメソッドのコンストラクターは静的です。
于 2016-12-26T18:28:38.680 に答える