Интерфейс в Java похож на класс, но тело интерфейса может включать только абстрактные методы и
finalполя (константы).
Недавно я увидел вопрос, который выглядит так
interface AnInterface {
public default void myMethod() {
System.out.println("D");
}
}
Согласно определению интерфейса, разрешены только абстрактные методы . Почему это позволяет мне скомпилировать приведенный выше код? Какое defaultключевое слово?
С другой стороны, когда я пытался написать код ниже, он говорит modifier default not allowed here
default class MyClass{
}
вместо того
class MyClass {
}
Может ли кто-нибудь сказать мне цель defaultключевого слова? Разрешено ли это только внутри интерфейса? Чем он отличается от default(без модификатора доступа)?