JAVA - 접근 제어자와 getter, setter 함수
데이터를 세팅할 때 패키지 다른 파일에서 클래스를 import 하여 작업을 하는 경우가 생기는데
이 때 아무리 import 했다고 한들 계속 오류가 나는 것을 확인할 수 있다.
이는 클래스와 함수의 접근 권한이 부족하기 때문이다.
이를 해결하기 위해선
앞선 클래스와 함수들 문장 앞에 public을 작성하면 데이터의 세팅이 가능해진다.
public Member(String name, String phone) {
// TODO Auto-generated constructor stub
this.name = name;
this.phone = phone;
}
이처럼 접근 권한을 제어하는 것을 접근 제어자라 한다.
접근 제어자의 종류와 권한은 다음과 같다.
default (아무것도 안 쓴 경우도 포함) - 같은 패키지 / 접근 가능
public - 클래스 내 , 같은 패키지 내 , 상속 관계 , 전체 / 접근 가능
protected - 클래스 내 , 같은 패키지 내 , 상속 관계 / 접근 가능
private - 같은 클래스 내 / 접근 가능
getter setter 는 멤버변수의 데이터를 가지고오거나 세팅하는 것이다.
멤버함수를 다른 파일에서 가지고 올 때 getter / setter를 사용해야하는데
객체들의 데이터(필드)를 private 접근 제한자로 막아두고, 외부에서 직접적으로 접근하는 것을 막아놓는다.
그리고 굳이 getter / setter 를 이용하는 이유는
이렇게 프로그래밍 하는 이유는 객체의 무결성을 보장하기 위함이다.
만약 거리(distance)라는 클래스가 있을 때 실제 값은 0이 될수 없지만
직접 접근하는 경우에 -100 이라는 값이 들어가 무결성이 깨지는 경우가 생기기 때문이다.
그러므로
필드를 private로 만들어 외부의 접근을 제한한 후,
Setter를 사용해 전달받은 값을 내부에서 가공해 필드에 넣어주는 방식을 사용하고
마찬가지로 필드 값을 가져올 때도,
Getter를 사용해 본 필드의 값을 숨긴 채
내부에서 가공된 값을 꺼낼 수 있다.
getter setter 를 쉽게 세팅하는 방법은 다음과 같다. (Eclipse)
빈 화면에 우클릭 -> source -> Generate Getter and Setters