본문 바로가기
Java/객체 지향

객체 지향 원칙 1 - 캡슐화(Encapsulation)

by 정구정구 2026. 6. 4.

캡슐화(Encapsulation)

  • 객체의 정보를 외부에서 직접 접근하지 못하게 보호하는 개념
  • 캡슐처럼 감싸서 내부를 보호하고 외부로부터 내용물을 숨김
  • 접근제어자를 통해 구현 가능

 

접근 제어자(Encapsulation)

  • 클래스, 변수, 메서드, 생성자의 접근 범위를 제한하는 키워드
제어자 같은 클래스 같은 패키지 자손 클래스 전체
public O O O O
protected O O O  
default O O    
private O      

 

public class DataClass 
{

    public String publicData;   
    private String privateData; 
    
    public DataClass() {}   // 생성자

    public void publicMethod() {}  
    private void privateMethod() {} 
}
DataClass dataClass = new DataClass(); // 접근가능
dataClass.publicData;                  // 접근가능
dataClass.privateData;                // 접근불가능
dataClass.publicMethod();             //  접근가능
dataClass.privateMethod();             // 접근불가능

 

 

게터(Getter)

  • 보호된 내부 데이터를 안전하게 조회하기 위해서 사용
public class DataClass 
{ 
    private String privateData;
    
    public String getPrivateData() {
		    return this.privateData;
    }
}
public class Main {
    public static void main(String[] args) {
		    DataClass dataClass = new DataClass();
		    dataClass.privateData; // 직접 접근 불가능
		    String newPassword = dataClass.getPrivateData(); // getter를 활용해 접근가능
    }
}

 

 

세터(Setter)

  • 보호된 내부 데이터를 안전하게 설정/변경하기 위해서 사용
public class DataClass 
{ 
    private String privateData;
    
    public void setPrivateData(String privateData) 
    {
		    this.privateData = privateData; // 데이터 변경
    }
}
public class Main 
{
    public static void main(String[] args) 
    {
		    DataClass dataClass = new DataClass();
		    dataClass.privateData = "New Password"; // 직접 접근, 변경 불가능
		    dataClass.setPrivateData("New Password"); // setter를 활용해 접근, 변경가능
    }
}