[JAVA] 캡슐화(접근제어자)

김채원·2025년 2월 25일
0
post-thumbnail

a. 캡슐화란 ?

  • 객체의 정보를 외부에서 직접 접근하지 못하게 보호하는 개념
  • 캡슐처럼 감싸서 내부를 보호하고 외부로부터 내용물을 숨기고 있는 모습에서 유래
  • 클래스 혹은 객체의 캡슐화는 접근제어자를 통해서 구현

b. 접근제어자란 ?

접근제어자는 클래스, 변수, 메서드, 생성자의 접근 범위를 제한하는 키워드

  • private : 모든 외부 호출 차단
  • default : 같은 패키지 안에서의 호출은 허용
  • protected : 같은 패키지 안에서의 호출, 패키지가 다른 상속관계에서의 호출은 허용
  • public : 모든 외부 호출 허용

c. 캡슐화된 데이터에 접근 방법

  • getter
public class Person { 
    private String secret;
    
    public String getSecret() {
		    return this.secret; // 객체의 secret 속성 반환
    }
}
public class Main {
    public static void main(String[] args) {
		    Person p1 = new Person();
		    //p1.secret; // 직접 접근 불가능
		    String newSecret = p1.getSecret(); // getter를 활용해 접근가능
    }
}

getter를 통해 private 변수의 값 확인

  • setter
public class Person { 
    private String secret;
    
    public void setSecret(String secret) {
		    this.secret = secret; // secret 속성 설정 및 변경
    }
}
public class Main {
    public static void main(String[] args) {
		    Person p1 = new Person();
		    //p1.secret = "password"; // 직접접근, 변경 불가능
		    p1.setSecret("newPassword"); // 세터를 활용해 접근, 변경가능
    }
}

setter를 통해 값을 변경해줄 수 있음

d. 정리

캡슐화
-> 데이터와 해당 데이터를 처리하는 메서드를 하나로 묶어 외부에서의 접근을 제어
속성과 기능을 하나로 묶고 외부에 꼭 필요한 기능만 노출하고 나머지는 숨김
1.데이터 숨기기
객체의 데이터는 객체가 제공하는 기능인 메서드를 통해 접근해야함
2.기능 숨기기
외부에서 사용하지 않고 내부에서만 사용하는 기능들은 모두 숨기는게 좋음

profile
김채원 판교간다

0개의 댓글