Wiem, że nie można zdefiniować konstruktora w interfejsie. Ale zastanawiam się, dlaczego, bo myślę, że może być bardzo przydatne.
Więc możesz być pewien, że niektóre pola w klasie są zdefiniowane dla każdej implementacji tego interfejsu.
Weźmy na przykład pod uwagę następującą klasę wiadomości:
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
}
}
Jeśli zdefiniujesz interfejs dla tej klasy, abym mógł mieć więcej klas, które implementują interfejs wiadomości, mogę zdefiniować tylko metodę wysyłania, a nie konstruktora. Jak więc mogę zapewnić, że każda implementacja tej klasy naprawdę ma ustawiony odbiornik? Jeśli używam metody takiej setReceiver(String receiver), jak nie mam pewności, czy ta metoda jest naprawdę wywołana. W konstruktorze mogłem to zapewnić.