「制御者」(Modifier)にカプセル化


せいぎょ者

  • 付与類と類範弗付加意義
  • アクセス制御者:public、protected、private(default)
  • それ以外:静態、final、abstract、native、transient、synchronized、volatile、strictfp
  • 順番なし
  • static


    クラス、共通、オブジェクトの作成なしで使用
  • メンバー変数
  • 方法:インスタンスメンバー(iv,im)使用不可
  • final


    変更不可
  • 拡張できない最後のサブクラス
  • オーバーライドできない方法
  • 定数
  • abstarct


    抽象的
    abstract class AbstractTest { // 추상 클래스 : 추상 메서드를 포함한 클래스
    	abstract void move(); // 추상 메서드 : 구현부가 없는 메서드
    }
    
    AbstractTest a = new AbstractTest(); // ERROR:추상 클래스의 인스턴스 생성 불가
  • 抽象クラスインスタンスを作成できない
  • 抽象クラスを継承して完全クラスとして作成可能
  • アクセス制御者

  • private:同一クラス(ファイル)内のみアクセス可能
  • (default):同一パッケージ内のみアクセス可能
  • protected:同じパッケージ内で、他のパッケージのサブクラスからアクセス可能
  • public:アクセス制限なし
  • クラスの前にはpublic、(default)、メンバーの前にしか貼れません.

    アクセス制御者はできるだけ範囲を縮小することが望ましい.

    パッケージングおよびアクセス制御者

    class Time {
    	private int hour;
    	private int minute;
    	private int second;
    
    	// 메서드를 통해 멤버 변수에 간접 접근
    	public int getHour() {
    		return hour;
    	}
    
    	public void setHour(int hour) {
    		if (isNotValidHour(hour))
    			return;
    		this.hour = hour;
    	}
    
    	// Alt+Shift+M
    	private boolean isNotValidHour(int hour) {
    		return hour < 0 || hour > 23;
    	}
    }
    
    public class c7_7_210414 {
    	public static void main(String[] args) {
    		Time t = new Time();
    		t.getHour();
    		t.setHour(25);
    	}
    } 	
  • アクセス制御プログラムでデータを外部から保護
  • 不要な部分を外部に隠し、内部のみ使用