default metoda w interfaceach

1

WHAT? Czemu tam znajduje się metoda default już implementowana w interfaceach? Możecie powiedzieć po co ona jest potrzebna i kiedy ją używać(przykład) ;3

public interface MicrowaveOven {

 void start();

 void setDuration(int durationInSeconds);

 boolean isFinished();

 void setPower(int power);

 default String getName() {
         return "MicrovaweOwen";
 }
}
1

Słowo kluczowe default sprawia, że metoda musi mieć ciało.

Do czego się używa?
Wyobraź sobie, że masz x klas implementujących interfejs. Chcesz dodać do interfejsu nową metodę bez ingerowania we wszystkie inne klasy implementujące.
Dzięki metodom defaultowym, każda z tych klas, "ma" już tą metodę. Skoro nie chcemy ingerować w implementacje klas implementujacych interfejs, dodajemy ciało metody defaultowej już w interfejsie.

1

Używając domyślnych metod możesz oszczędzić powielenia kodu w klasach implementujących interfejs. Klasa implementująca interfejs nie musi implementować metod, które mają domyślną implementację, ale w przypadkach gdy to potrzebne, możesz je nadpisać w klasie implmentującej.

1

Wyobraź sobie że chcesz zrobić interfejs ale chcesz zeby każda klasa miała pewną metodę już zaimplementowaną. Jednocześnie niekoniecznie możesz zrobić klasę abstrakcyjną, bo może jakaś klasa implementująca ten interfejs ma już nadklasę.
Można też używać tego jak mixinów/traitów, czyli sposób na "wrzucenie" metody (często takiej jakiejś uniwersalnej / cross-cutting) do klasy.

0

Możesz wykorzystać metodę default w swoich przykładzie np. to tego:

public interface MicrowaveOven {

 void start();

 void setDuration(int durationInSeconds);

 boolean isFinished();

 void setPower(int power);

default  void bake(int power, int durationSeconds) throws InterruptedException{
 setPower(power);
 setDuration(durationSeconds);
 start();
 while(!isFinished(){
  Thread.sleep(100);
 }
}

 default String getName() {
         return "MicrovaweOwen";
 }
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1