Есть ли в Java какие-либо абстрактные переменные?

Могут ли переменные быть абстрактными в Java? Поддерживает ли конструктор абстрактные переменные? Я не уверен, но думаю, что конструктор поддерживает статические переменные. Пожалуйста, проясните мои сомнения.

12
задан Archmede 29 November 2019 в 18:20
поделиться

2 ответа

В java только классы и методы могут быть абстрактными. Объявления переменных не могут. Однако вы можете иметь объявления переменных, типы которых являются абстрактными. См. пример:

public abstract class MyClass { // allowed
   public abstract myMethod(); // allowed
   public MyClass instance; // allowed

   public abstract MyClass instance; // NOT ALLOWED!!
}
24
ответ дан 2 December 2019 в 04:16
поделиться

В спецификации языка перечислены 7 типов переменных:

  1. переменные класса — объявлены как статические в объявлении класса
  2. переменные экземпляра — объявлены в объявлении класса без используя статическое ключевое слово
  3. компоненты массива - например, i[2], когда мы создаем массив, например int[] i= new int[5]
  4. параметры метода - имя значения аргумента передается в метод
  5. параметры конструктора - имя значения аргумента передается в конструктор
  6. параметр обработчика исключений - создается каждый раз при перехвате исключения
  7. локальные переменные - объявлено в блоке ({ }) или для инструкции

Вы можете использовать все типы переменных (кроме #4) в конструкторе:

class Demo {
   static int demo1 = 0;               // class variable
   int[] demo2 = new int[5];           // instance variable
   Demo(int demo3) {                   // constructor parameter
     try {
       int demo4 =                     // local variable
                   demo2[2];           // array component
     } catch(RuntimeException demo5) { // exception-handler parameter
     }
     demo2 = new int[]{Demo.demo1};    // using class and instance variable
                                       // in a constructor
   }
   int method(int demo6) {             // method parameter
   }
}

Ключевое слово abstract не разрешено для объявления переменных.

11
ответ дан 2 December 2019 в 04:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: