Language/JAVA

[JAVA 기초 이론] 캡슐화 private / getter / setter

오류나면꽥꽥 2023. 5. 18. 17:48

캡슐화

"민감한" 데이터를 사용자에게 비노출

 

 

 

캡슐화 장점

클래스 안 데이터의 직접 수정을 막고 메서드로만 변경 허용

1. 데이터 보호

2. 내부적으로만 작동하는 코드 숨김

 

 

 

캡슐화 방법

1. 클래스 안 속성(=변수)을 private으로 설정. 

 private 수정자 :동일 클래스에서만 접근 가능.

 

2. private 설정된 속성에 접근 방법 :

public 설정된 get/set 메서드 통해서만 허용.

 

 

 

자바는 클래스 등을 생성할 때, 일반적으로 public을 디폴트 되어있다.

public class Test{
    String name;
    int age;
}

 

public

모든 곳에서 접근 가능

 

public class Test{
    private String name;
    private int age;
}

 

private

자기 자신 클래스에서만 접근 가능

 

클래스의 멤버 변수의 접근제어자를 private로 변경하게 된다면 클래스의 외부에서 직접적 접근이 불가해진다

 

 

 


 

 

 

✅ private

해당클래스 내부에서만 접근 가능

public class Test{
    private String name;
    private int age;
}

public String getName(){
}

public String setName(){
}

public int getAge(){
}

public int setAge(){
}

 

대신, 멤버변수의 getter, setter를 만들어줌

          해당 클래스에서 마우스 우클릭(alt+shift+s)  ▶  source  ▶  getter,setter 선택

// setter : 멤버변수에 값을 설정
// getter : 멤버변수로부터 값을 받아올 수 있도록 해줌

 

외부에서 직접적으로 멤버변수의 값에 접근할 수는 없으나,
getter,setter를 인지하고 있으면 값을 바꿀 수 있다!
=>  제어자 == "캡슐화"

 

 

 

private을 하는 이유

하나의 코드를 여러 개발자들이 동시에 작업

=> 오류 발생 시 어떤 액션 + 어떤 기능에서 발생했는지를 기록해주기 때문에