Переменные интерфейса Java 7? - PullRequest
0 голосов
/ 24 мая 2018

Согласно это

В Java 7 или более ранней версии интерфейс не может иметь никаких переменных.Интерфейс может иметь только методы, которые должны быть общедоступными.

Правильно ли это утверждение?

Согласно приведенной выше ссылке

Хотя в Java 8 вымогут иметь переменные внутри интерфейса, и все переменные должны быть объявлены как static и final

Если его static и final, тогда мы можем назвать его переменной? Или она должна быть постоянной?

Can 'мы объявляем String bh=""; в интерфейсе Java 7?Я попытался в Android Studio, отключив Java 8, и я могу заявить об этом.Интервьюер задал мне тот же вопрос: «Можем ли мы объявить переменные в Java 7», и мой ответ был «да».

1 Ответ

0 голосов
/ 24 мая 2018

С http://knowledgehills.com/java/java-interface-variables-default-methods.htm

Мы можем объявить переменные в интерфейсах Java.По умолчанию это public, final и static.То есть они доступны во всех местах программы, мы не можем изменять эти значения и, наконец, создается только один экземпляр этих переменных, это означает, что все классы, которые реализуют этот интерфейс, имеют только одну копию этих переменных в памяти.

Вкратце это правила для интерфейсов:

Переменные-члены

  • Может быть только общедоступной и по умолчанию.
  • По умолчанию являются статическими и всегда статическими
  • По умолчанию являются окончательными и всегда окончательными

Методы

  • Может быть только общедоступным и по умолчанию.

  • Не может быть статическим

  • Не может быть конечным


Java 8 Форма http://www.javahelps.com/2015/02/introduction-to-interface-with-java-8.html

До версии Java 1.7 все методы, объявленные в интерфейсах, являются открытыми и абстрактными по умолчанию.Начиная с Java 1.8, интерфейс может иметь методы по умолчанию и статические методы. Следовательно, обновленное правило

Интерфейс может иметь методы по умолчанию и статические методы.Любые другие методы неявно являются публичными и абстрактными.Все поля, объявленные в интерфейсе, являются неявно открытыми, статическими и конечными константами.

Пример:

interface Super {

      //An abstract method. By default it is public and abstract.

    void print();

     //Default method, introduced in Java 8.

    public default void doStuff() {
        System.out.println("Hello world");
     }       
      //Static method in interface, introduced in Java 8.

    public static void sayHello() {
        System.out.println("Hello");
     }
 }

Реализация:

class Base implements Super {

        // Override the abstract method.

        @Override
        public void print() {
            System.out.println("Base");
       }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...