캡슐화와 접근제어자.

Kuno17·2022년 12월 28일
0

Java 기초

목록 보기
2/6
post-thumbnail

접근 제어자를 사용하는 이유

  • 클래스 내부에 선언된 데이터를 보호하기 위함. (접근을 제어하기 위함)
  • 외부에 불필요한 , 내부적으로만 사용되는 부분 감추기 위해서

다음처럼 시간을 표시하기 위한 클래스를 만들때 이클래스의 맴버변수 hour, minute, second는

각각 0-24 , 0-59, 0-59와 같은 범위를 지켜져야 한다. 하지만 hour = 25; 이렇게 누군가 수정한다해도 막을 방법이 없다.

따라서 다음 예문과 같이 작성하여 클래스 맴버에 직접적으로 접근할 방법을 차단시킬 수 있다.
또한 조건에 맞지않으면 입력을 방지할 수 있다.

class time1 {
    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;
    }
    public int getMinute() { return minute;}
    public void setMinute(int minute) {
        if(minute <0 || minute > 59) return;
        this.minute=minute;
    } 
    public int getSecond() { return second;}
    public void setSecond(int second){
        if(second<0 || second > 59) return;
        this.second =second;
    }
}

다음과 같이 접근할 수 있다.

public class TimeTest {
    public static void main(String[] args) {
        Time1 t = new Time1();
//        t.hour = -100;  //에러발생.
        t.setHour(21); // hour의 값을 21로 변경
        System.out.println(t.getHour());
    }
}

다음과 같이 객체를 생성한 후 내부의 변수값을 직접 변경하려 하면 에러가 발생한다.

t.hour = 100 ; → 에러발생.

따라서 get,set메서드를 통해서만 읽고 쓰기가 가능하다.

이런 경우를 캡슐화라고 볼 수 있다.

profile
자바 스터디 정리 - 하단 홈 버튼 참조.

0개의 댓글