java中有任何抽象变量吗?

Vin*_*mar 12 java variables abstract

在java中有任何抽象变量吗?我在构造函数中使用这个抽象变量我很确定,但我认为构造函数支持静态变量.pls澄清了我的疑问

nai*_*kus 24

在java中,只有类和方法可以是抽象的.变量声明不能.但是,您可以使用其类型为抽象的变量声明.见例子:

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

   public abstract MyClass instance; // NOT ALLOWED!!
}
Run Code Online (Sandbox Code Playgroud)

  • @goldenmean它尚未实例化.public MyClass instance = new MyClass()会抛出错误.(如果MyClass是抽象的) (2认同)

And*_*s_D 11

语言规范列出了7种类型的变量:

  1. 类变量 - 在类声明中声明为static
  2. 实例变量 - 在不使用static关键字的情况下在类声明中声明
  3. 数组组件 - 就像i[2]我们创建一个数组一样int[] i= new int[5]
  4. 方法参数 - 传递给方法的名称参数值
  5. 构造函数参数 - 传递给构造函数的name参数值
  6. exception-handler参数 - 每次捕获异常时创建
  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
   }
}
Run Code Online (Sandbox Code Playgroud)

abstract变量声明不允许使用该关键字.