제어자란 클래스, 변수, 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다.
public, protected, default, privatestatic, final, abstract, synchronized ..접근 제어자
| 제어자 | 같은 클래스 | 같은 패키지 | 자식클래스 | 전체 |
|---|---|---|---|---|
| public | O | O | O | O |
| protected | O | O | O | X |
| (default) | O | O | X | X |
| private | O | X | X | X |
private나 protected로 접근이 제한된 멤버변수는 getter와 setter 메서드를 이용해 간접적으로 접근한다.
public class Main{
public static void main(String[] args) {
GetSet gs = new GetSet();
gs.set(2, 3, 4);
System.out.println("a = " + gs.getA()); // a = 2
System.out.println("b = " + gs.getB()); // b = 3
System.out.println("c = " + gs.getC()); // c = 4
}
}
class GetSet {
private int a, b, c;
public void set(int a, int b, int c) {
this.a = a;
this.b = b;
this.c = c;
}
public int getA() {
return a;
}
public int getB() {
return b;
}
public int getC() {
return c;
}
}
위의 코드를 보자. GetSet 클래스에는 a, b, c 의 접근 제어자가
private으로 되어 있다. 따라서 다른 클래스에서 이 멤버변수에 접근하기 위해 get, set 메서드를 만들었다.get 메서드는 세 개의 매개변수를 받아와 멤버변수 a, b, c에 각각 할당한다.
그리고 get 메서드는 각각 a, b, c를 반환한다.
그 후 main 메서드에서 GetSet 클래스 타입의 객체 gs를 생성 하고, set 메서드를 호출해 매개변수로 2, 3, 4를 넘겨준다. 그리고 get 메서드를 호출해 출력해주면 넘겨준 2, 3, 4가 a, b, c에 잘 할당되어 출력되는 것이다.
제어자의 조합