1. ホーム
  2. java

[解決済み] インターフェイスのコンストラクタ?

2022-04-25 08:13:03

質問

インターフェイスにコンストラクタを定義することができないのは知っています。しかし、非常に便利だと思うので、なぜなのか不思議です。

つまり、あるクラスのいくつかのフィールドは、このインターフェイスのすべての実装に対して定義されていることを確認することができます。

例えば、次のようなメッセージ・クラスを考えてみましょう。

public class MyMessage {

   public MyMessage(String receiver) {
      this.receiver = receiver;
   }

   private String receiver;

   public void send() {
      //some implementation for sending the mssage to the receiver
   }
}

メッセージ・インターフェースを実装するクラスを増やすために、このクラスのインターフェースを定義する場合、sendメソッドしか定義できず、コンストラクタは定義できません。では、このクラスのすべての実装が本当に受信機セットを持つことを保証するには、どうすればよいでしょうか?もし私が setReceiver(String receiver) このメソッドが本当に呼び出されているかどうか、確認することができないのです。コンストラクタでそれを確認することができます。

どのように解決するのですか?

説明されたことをいくつか取り上げます。

<ブロッククオート

あるクラスのいくつかのフィールドが、そのクラスで定義されていることを確認することができます。 このインターフェイスのすべての実装があります。

"このクラスのInterfaceを定義して、さらに別のクラスを持つことができるようにする。 メッセージインターフェイスを実装するクラスで、私が定義できるのは sendメソッドとコンストラクタは含まれません。

...これらの要件は、まさに 抽象クラス は、そのためのものです。