Почему интерфейс не может иметь защищенные методы
Возможный дубликат:
Защищенные интерфейсы
В Java почему can not я защитил методы в интерфейсе?
Так как согласно спецификациям Java
защищенный доступ (обозначается ключевым словом protected) - поле или метод, доступные для любого типа в одном пакете и подклассы в любом пакете.
Если я вообще должен использовать интерфейс, я собираюсь реализовать его и переопределить методы.
Поэтому, если я собираюсь реализовать, где класс имеет доступ к этим методам, поскольку метод доступен в любом пакете. Итак, каков вред в объявлении метода как защищенного в интерфейсе?
Ответы
Ответ 1
Защищенные методы предназначены для совместного использования реализации с подклассами. Интерфейсы не имеют ничего общего с реализацией совместного использования, поскольку они вообще не имеют реализации. Поэтому все методы на интерфейсах должны быть общедоступными.
Ответ 2
Интерфейс объекта является частью этого объекта, который видим для внешних пользователей этого класса.
Напротив, защищенные и частные методы (и поля) относятся к внутренним классам. Они инкапсулируются внутри класса, и пользователь класса не должен знать о них.
Итак, поскольку interface
используется для определения интерфейсов (не предназначенных для каламбур), разумно, что они не содержат защищенных методов.
Нельзя думать о реализации при определении interface
Ответ 3
Существует ли вред или нет. Ваша точка спорна, если компилятор этого не допустит. Разработчики языка решили потребовать, чтобы все они были общедоступными, и теперь было бы невозможно изменить его, не нарушая много кода.