интерфейс:
interface MasterPlan{
void getRate();
}
абстрактный класс:
abstract class Plan implements MasterPlan{
abstract void getRate();
} }
В этом случае я не могу реализовать интерфейс MasterPlan
без использования модификатора public
в методе getRate()
.
public abstract void getRate();
это работает с нормальным поведением.
Я знаю, что в интерфейсах модификатор по умолчанию default
. в чем причина этой ошибки без модификатора public
в реализованном абстрактном классе?
private
) само по себе является декларацией доступа: он объявляет, что метод имеет доступ к частному пакету. Это поведение не меняется, даже если объявление метода реализует метод интерфейса. Таким образом, вы должны написатьpublic
так же, как и для любого другого общедоступного метода. И поскольку вы реализуете метод интерфейса, он действительно должен быть общедоступным. - person Kevin Anderson   schedule 21.02.2019