Interfejs w Javie jest podobny do klasy, ale treść interfejsu może zawierać tylko abstrakcyjne metody i
final
pola (stałe).
Niedawno zobaczyłem pytanie, które wygląda tak
interface AnInterface {
public default void myMethod() {
System.out.println("D");
}
}
Zgodnie z definicją interfejsu dozwolone są tylko metody abstrakcyjne . Dlaczego pozwala mi skompilować powyższy kod? Jakie jest default
słowo kluczowe?
Z drugiej strony, gdy próbowałem napisać poniższy kod, to mówi modifier default not allowed here
default class MyClass{
}
zamiast
class MyClass {
}
Czy ktoś może mi powiedzieć, do czego służy default
słowo kluczowe? Czy jest to dozwolone tylko w interfejsie? Czym się różni od default
(brak modyfikatora dostępu)?