Интерфейс в 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
(без модификатора доступа)?