Можем ли мы использовать закрытые или защищенные переменные-члены в интерфейсе?

3

Можно ли определить интерфейс следующим образом:

public interface Test{
   public string name1;
   private String email;
   protected pass;
}
  • 3
    Поделиться своими исследованиями помогает всем. Расскажите нам, что вы пробовали и почему это не соответствует вашим потребностям. Это свидетельствует о том, что вы потратили время, чтобы попытаться помочь себе, избавляет нас от повторения очевидных ответов и, прежде всего, помогает получить более конкретный и актуальный ответ! Также посмотрите, как спросить
  • 0
    в некоторых исключительных языках (таких как Scala) да, поскольку вы можете определять функции в интерфейсе, хотя в общем случае нет (например, c #), так как вы никогда не сможете получить доступ к параметрам
Показать ещё 5 комментариев
Теги:

3 ответа

5

Когда вы объявляете интерфейс. Компонент java добавляет общедоступные и абстрактные ключевые слова перед методом интерфейса, а также публичное, статическое и конечное ключевое слово s перед тем, как данные автоматически

public interface Test{
   public string name1;
   private String email;
   protected pass;
}

так как вы объявляете переменную в тестовом интерфейсе с частной и защищенной, она будет давать ошибку. если вы не укажете модификатор, компилятор автоматически добавит открытый статический финал.

public interface Test{
   public static final string name1;
   public static final  String email;
   public static final pass;
}

Самое главное, что

  1. интерфейсы не могут быть созданы, поэтому переменная является статической

  2. интерфейс используются для достижения 100% -ной абстракции там для переменной, являются окончательными

  3. Интерфейс обеспечивает способ взаимодействия клиента с объектом. Если переменные не были общедоступными, клиенты не имели бы к ним доступа. поэтому переменная является общедоступной

3

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

Только члены сообщества имеют значение для кода, использующего интерфейс.

  • 0
    хотя в некоторых языках, таких как Scala, интерфейс отличается, как это характерно, поэтому это возможно, но зависит от языка, но опять же ... в этом случае это не интерфейс, так что нет
  • 0
    @McShep Спасибо за информацию. Я не писал Scala раньше.
1

быть java

разрешены только публичные, статические и конечные

Вы должны использовать abstract класс вместо interface если хотите объявить его поля.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню