Подтвердить что ты не робот

Почему интерфейс не может иметь защищенные методы

Возможный дубликат:
Защищенные интерфейсы

В Java почему can not я защитил методы в интерфейсе?

Так как согласно спецификациям Java

защищенный доступ (обозначается ключевым словом protected) - поле или метод, доступные для любого типа в одном пакете и подклассы в любом пакете.

Если я вообще должен использовать интерфейс, я собираюсь реализовать его и переопределить методы. Поэтому, если я собираюсь реализовать, где класс имеет доступ к этим методам, поскольку метод доступен в любом пакете. Итак, каков вред в объявлении метода как защищенного в интерфейсе?

4b9b3361

Ответ 1

Защищенные методы предназначены для совместного использования реализации с подклассами. Интерфейсы не имеют ничего общего с реализацией совместного использования, поскольку они вообще не имеют реализации. Поэтому все методы на интерфейсах должны быть общедоступными.

Ответ 2

Интерфейс объекта является частью этого объекта, который видим для внешних пользователей этого класса. Напротив, защищенные и частные методы (и поля) относятся к внутренним классам. Они инкапсулируются внутри класса, и пользователь класса не должен знать о них.

Итак, поскольку interface используется для определения интерфейсов (не предназначенных для каламбур), разумно, что они не содержат защищенных методов.

Нельзя думать о реализации при определении interface

Ответ 3

Существует ли вред или нет. Ваша точка спорна, если компилятор этого не допустит. Разработчики языка решили потребовать, чтобы все они были общедоступными, и теперь было бы невозможно изменить его, не нарушая много кода.