멤버변수 은닉된 경우, 데이터 접근을 위한 간접적인 방법이 필요.
Getter: 은닉된 멤버변수의 값을 반환하는 메서드.
private int age;
private String name;
public int getAge(){
return this.age;
}
public String getName(){
return this.name;
}
Setter: 파라미터로 전달된 값을 멤버변수에 할당하는 메서드.
private int age;
public void setAge(int age){
if(age >= 0){
this.age = age;
} else {
this.age = 0;
}
}
캡슐화
- 유사한 기능이나 변수를 한 집합으로 하여 더 관리하기 쉽게하고 코드를 명확히 함
- 외부에서 멤버를 엑세스하는 방법을 지정할 수 있도록, 직접 접근을 막거나 접근전 부가적인 처리를 요구함
- 정보를 외부에 은닉하여 외부에서는 해당 집합의 세부 내용에 집중하지 않도록 함
// 1. 은닉성
class Car {
private String model; // 은닉된 멤버변수
public Car(String model) {
this.model = model;
}
// 3. Getter, Setter
public String getModel() {
return model;
}
public void setModel(String model) {
this.model = model;
}
}
public class Main {
public static void main(String[] args) {
// 4. 클래스에 접근 한정자를 지정한 경우
Car myCar = new Car("Sedan"); // public 클래스는 객체 생성 가능
// 은닉된 멤버변수에 간접적으로 접근
System.out.println("My car model: " + myCar.getModel());
// 5. 클래스의 분리
Engine myEngine = new Engine(); // Engine 클래스는 다른 클래스에서 객체 생성 가능
}
}
// 5. 클래스의 분리
class Engine {
// 엔진 관련 기능 구현
}