7-22パッケージ、アクセス制御者


アクセス制御プログラムを使用してオブジェクトをカプセル化できます
アクセス制御プログラムを使用する理由(なぜカプセル化するか)
  • 外部からデータを保護
  • は、内部でのみ使用される不要な部分を隠すことを目的としています.
    例1-外部からのデータ保護
    public class Time{
        // 멤버 변수의 접근 제어자를 private으로 하여 외부에서 직접 접근하지 못하도록 한다.
        private int hour;
        private int minute;
        private int second;
        
        public int getHour(){ return hour };
        public void setHour(int hour){
        	if(hour < 0 || hour > 23) return;
            this.hour = hour;
        }
        // 매개변수로 넘겨진 hour가 유효한지 확인해서 알려주는 메서드
       
    }
    前述したように、コードの作成時にメンバー変数に直接アクセスすることはできません.
    Time t = new Time();
    t.hour = 25;	// 에러!! 멤버변수에 직접 접근 불가능
    t.setHour(25);	// 가능. 메서드가 호출되어도 조건문이 있기 때문에 안전하게 값을 보호 한다.
    cf)alt+shift+M:抽出方法
    方法例2-hour<0||hour>23を抽出し、可読性の良いコードに変換する
    △isNotValidHourは公開する必要がないので、プライベートが望ましい.
    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;
        }
        // 매개변수로 넘겨진 hour가 유효한지 확인해서 알려주는 메서드
        private boolean isNotValidHour(int hour) {
    	return hour < 0 || hour > 23;
        }
    }
    public class practice {
        public static void main(String[] args){
    	Time t = new Time();
    	t.setHour(21);
    	System.out.println(t.getHour());
        }
    }