접근제어자 라는 예약어를 통하여 클래스 내 멤버변수나, 메소드, 생성자의 접근권한을 지정할 수 있다.
접근제어자 | 설명 |
---|---|
public | 외부클래스 어디에서나 접근할 수 있다. |
protected | 같은 패키지 내, 상속 관계의 클래스에서만 접근할 수 있다. [그 외 클래스에서는 접근 불가] |
아무것도 없는 경우 | default이며 같은패키지 내부에서만 접근 가능하다. |
private | 같은 클래스 내부에서만 접근 가능하다 |
private 접근제어자를 사용하여 멤버 변수나 메서드를 지정하게 될 경우 해당 클래스에서만 변수와 메서드를 변경할 수 있으나, main() 함수에서는 변수와 메서드에 접근이 불가하여 초기화할 수가 없다.
private 되어있는 변수와 메서드는 직접적으로는 접근이 불가능하지만 간접적(메서드)으로는 접근이 가능하여 값을 변경하거나 메서드를 호출할 수 있다.
Student 클래스의
(1) private String name;
(2) private int age;
가 정의되어 있다고 가정
// 1. name변수를 초기화하는 과정
public void setName(String name) {
this.name = name;
}
// 2. 초기화된 name변수를 반환하는 과정
public String getName() {
return name;
}
- main() 함수에서 private 멤버 변수를 직접적으로 초기화할 수 없기 때문에 메서드를 통해서 반환값 없이 멤버 변수에 매개변수를 대입하는 메서드를 구현한 것
- 대입된 멤버 변수를 메서드를 통해 main() 함수로 호출하는 메서드를 구현한 것