AVA-制御者(修飾子)


アクセス制御者public、protected、default、private
その他:static、final、abstract、native、transient、synchronized、volatile、strictfp

静的-クラスの共通

  • インスタンス変数は1つのクラスから作成されますが、異なる値は維持されますが、クラス変数の値はインスタンスには関係ありません.
  • 静的メンバー変数、メソッド、および初期化ブロックは、インスタンスを作成する必要がなく使用できます.
  • 静的に使用可能な場所-メンバー変数、メソッド、および初期化ブロック

    final-最後の、変更不可

  • 変数で使用される場合、この値は変更できない定数です.
  • メソッドで使用すると、上書きできなくなり、拡張自体のサブクラスを定義できなくなります.
  • finalで使用可能な場所-クラス、メソッド、メンバー変数、領域変数

    ジェネレータを使用してfinalメンバー変数を初期化する

  • finalに付随する変数は定数であるため、通常は同時に宣言および初期化することができるが、インスタンス変数の場合、構造関数で初期化することができる.
  • クラスでパラメータを持つコンストラクション関数を宣言し、インスタンスの作成時にコンストラクション関数のパラメータからfinal付きメンバー変数を初期化するために必要な値を取得します.
  • を使用すると、各インスタンスのfinalメンバー変数には異なる値があり得る.
  • class Card{
    	final int NUMBER;		//상수지만 선언과 함께 초기화 하지 않고
        final String KIND;		//생성자에서 단 한번만 초기화할 수 있다.
        static int width  = 100;
        static int height = 250;
        
        Card(String kind, int num)
        {
        	KIND = kind;		//매개변수로 넘겨받은 값으로
            NUMBER = num;		//KIND와 NUMBER를 초기화한다.
        }
        
        Card()
        {
        	this("HEART", 1);
        }
        
        public String toString()
        {
        	return KIND + " " + NUMBER;
        }
    }
    
    class FinalCardTest{
    	public static void main(String args[])
        {
        	Card c = new Card("HEART", 10);
            c.NUMBER = 5;	//에러 ! cannot assign a value 
            				//to final variable NUMBER
            System.out.println(c.KIND);
            System.out.println(c.NUMBER);
            System.out.println(c);	//System.out.pritnln(c.toString());
        }
    }

    抽象的


    メソッドのみを作成するための宣言子と、実装されていない抽象メソッドを宣言します.
    abstractの使用可能な場所-クラス、メソッド
    抽象クラスは、未完了メソッドが存在する「未完了の設計図」であるため、インスタンスを生成できません.
    	abstract class AbstractTest{		//추상 클래스
        	abstract void move();			//추상 메서드
        }
    このクラスにはインスタンスを作成する必要はありません.したがって、クラスの前に制御者「abstract」を追加して、インスタンスの生成を防止します.
    public abstract class WindowAdaptor
    	implements WindowListener, WindowStateListener, WindowFocusListener{
        	public void windowOpened(WindowEvent e) {}
            public void windowClosing(WindowEvent e) {}
            public void windowClosed(WindowEvent e) {}
            public void windowIconified(WindowEvent e) {}
        }
    上記のクラス自体は役に立たないが,他のクラスがそのクラスを継承し,必要な方法の一部を上書きするだけでよいという利点がある.

    アクセス制御者


    アクセス制御者は、メンバーまたはクラスに使用され、そのメンバーまたはクラスが外部からアクセスできないことを制限する役割を果たします.
    public > protected > (default) > private

    制御者(modifier)の組合せ

  • メソッドでは、静的および抽象的を同時に使用することはできません.
  • クラスでabstractとfinalを同時に使用することはできません.
  • 抽象メソッドのアクセス制御者は、プライベートであってはならない.
  • メソッドでprivateとfinalを同時に使用する必要はありません.