2. 제어자
1. 제어자, Modifier
제어자는 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 옵션을 적용해주는 키워드(keyword)들을 의미함
2. 제어자의 구분
제어자는 크게 2가지로 구분할 수 있음
2-1. 접근 제어자(Access Modifier)
접근 제어자란 클래스, 변수, 메서드, 생성자 등의 접근 범위(visibility) 를 제어하는 키워드
Note
접근(Access)의 의미
대상 필드의 값을 읽거나, 수정할 수 있는지, 대상 메서드를 호출할 수 있는지?
public, protected, default(package-private), privateMain 클래스(Main.java) 기준으로, Main 클래스가 Employee나 Manager 클래스가 가진 필드나 메서드에 접근할 수 있는지에 대한 범위를 제어, 제한해주기 위한 키워드
Employee.java
class Employee {
private int salary = 5000;
public void showSalary() {
System.out.println("급여는 " + salary + "만원입니다.");
}
public void work() {
System.out.println("업무를 수행합니다.");
}
}
Manager.java
class Manager {
public String department = "영업팀";
public void manage() {
System.out.println("팀을 관리합니다.");
generateReport(); // Manager 내부에서는 호출 가능
}
private void generateReport() {
System.out.println("보고서를 생성합니다.");
}
}Main.java
class Main {
public static void main(String[] args) {
Employee emp = new Employee();
Manager mgr = new Manager();
emp.showSalary(); // 출력 가능 (public 메서드)
emp.work(); // 출력 가능 (public 메서드)
// emp.salary; // 컴파일 에러: private 필드 접근 불가
System.out.println(mgr.department); // 출력 가능 (public 필드)
// mgr.generateReport(); // 컴파일 에러: private 메서드 접근 불가
mgr.manage(); // 출력 가능 (manage 내부에서 private 메서드 호출)
}
}→ 각 클래스가 가진 필드나 메서드에 대한 접근 권한에 대한 결정권은 일반적으로 해당 클래스 자신에게 있음
💡
Tip
그 외 나머지 제어자
static, final, abstract, native, transient, synchronized, volatile 등
2. 제어자 키워드를 사용할 수 있는 문법적 위치, 규칙
2-1. 하나의 대상에 대해 여러 제어자를 조합하여 사용하는 것이 가능
public class Main {
public static void main(String args[]) {
// ...
}
}→ main() 앞에 접근 제어자 중 하나인 public과 그 외 제어자 중 하나인 static을 조합하여 사용
2-2. 접근 제어자는 한 번에 네 가지 중 하나만 선택해서 사용할 수 있음
하나의 대상에 대해서 public과 private을 동시에 사용 불가
Mouse.java
public private class Mouse { // Compile Error.
public private int age; // Compile Error.
}이러한 제어자들은 클래스 이름 앞이나, 멤버 필드, 멤버 메서드 앞에 주로 사용됨
Last updated on