web-dev-qa-db-ja.com

Javaに抽象変数はありますか?

Javaで変数をabstractにすることはできますか?コンストラクターはabstract変数をサポートしていますか?よくわかりませんが、コンストラクターは静的変数をサポートしていると思います。私の疑問を明確にしてください。

12
Vinoth Kumar

Javaでは、クラスとメソッドのみを抽象化できます。変数宣言はできません。ただし、型が抽象化された変数宣言を使用できます。例を参照してください。

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

   public abstract MyClass instance; // NOT ALLOWED!!
}
23
naikus

言語仕様には、7種類の変数がリストされています。

  1. クラス変数-クラス宣言内で静的として宣言されています
  2. インスタンス変数-staticキーワードを使用せずにクラス宣言内で宣言
  3. 配列コンポーネント -i[2]のような配列を作成する場合はint[] i= new int[5]のように
  4. メソッドパラメータ-メソッドに渡される名前引数値
  5. コンストラクターパラメーター-コンストラクターに渡される名前引数値
  6. exception-handlerパラメーター-例外がキャッチされるたびに作成されます
  7. ローカル変数-ブロック({ })またはforステートメントで宣言

コンストラクターでは、すべての変数タイプ(#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
Andreas_D

abstractは、Javaクラス、メソッドには適用できますが、変数には適用できません。オブジェクト指向プログラミングの柱の1つである抽象化を実現するために使用されます。

0
J. Lily