Я знаю, что невозможно определить конструктор в интерфейсе. Но мне интересно, почему, потому что я думаю, что это может быть очень полезно.
Таким образом, вы можете быть уверены, что некоторые поля в классе определены для каждой реализации этого интерфейса.
Например, рассмотрим следующий класс сообщений:
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)
, я не могу быть уверен, что этот метод действительно вызван. В конструкторе я мог бы это гарантировать.