본문 바로가기

[JAVA 복습] 접근 제어자 (Access Modifier) 와 캡슐화

인포꿀팁 발행일 : 2022-02-10

접근제어자란?

변수나 메소드의 사용 권한은 다음과 같은 접근 제어자를 사용하여 설정할수 있다.

  1. private : 메소드는 해당 클래스에서만 접근이 가능
  2. default :  해당 패키지 내에서만 접근이 가능
  3. protected : 메소드는 동일 패키지의 클래스 또는 해당 클래스를 상속받은 다른 패키지의 클래스에서만 접근이 가능
  4. public : 어떤 클래스에서라도 접근이 가능

private -> default -> protected -> public 순으로 보다 많은 접근을 허용한다.

 

캡슐화 Encapsulation

위에서 접근 제어자를 사용하는 이유가 캡슐화에 해당된다.

  • 꼭 필요한 정보와 기능만 외부에 오픈하는 것
  • 대부분의 멤버 변수와 메서드를 감추고 외부에 통합된 인터페이스만은 제공해 일관된 기능을 구현하게 하는 것
  • 각각의 메서드나 멤버 변수를 접근함으로써 발생하는 오류를 최소화 할 수 있는 장점도 있다

아래 코드와 같이 변수에 직접 접근을 막고 메서드를 통해 변수에 접근이 가능하며, 

이때 setter 메서드에 변수에 대한 값의 제한을 주거나 조건을 따로 줄 수 있게 된다.

흔히 Spring을 이용한 개발을 진행할시 DTO(객체)의 역할을 하는 클래스를 만들때 주로 사용하게 된다.

public class Time {

    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;
    }
}

댓글