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