Java 에서 접근 제어자(Access Modifiers)는 클래스, 변수, 메소드 및 생성자에 대한 접근을 제한하는데 사용된다. 접근 제어자는 객체 지향 프로그래밍의 캡슐화(encapsulation) 원칙을 지원하며, 데이터를 보호하고, 외부에서의 불필요한 접근을 제한한다. 쉽게 말하자면 유명한 맛집의 비법은 아무나 알 수 없게 하기 위함과 같다고 생각하면 된다.
Java 에서는 아래의 네 가지의 접근 제어자를 사용한다.
1. Private
- 해당 멤버(변수, 메소드)를 선언한 클래스 내에서만 접근이 가능하다.
- 클래스 외부에서는 접근할 수 없으므로, 가장 제한적인 접근 수준을 제공한다.
- 주로 내부 작업을 위한 메소드나 변수에 사용된다.
2. Default (package - private)
- class 생성시 접근 제어자를 명시적으로 지정하지 않을 경우 자동으로 dafault 가 적용된다.
- 같은 패키지 내에서는 아무런 제한 없이 사용 가능하지만 다른 패키지에서는 사용할 수 없도록 제한된다.
3. Protected
- 같은 패키지 내의 다른 클래스 또는 다른 패키지의 하위 클래스에서 접근할 수 있게 해준다.
- 상속 관계에 있는 클래스들 사이에서 상위 클래스의 멤버에 접근할 필요가 있을 때 유용하다.
4. Public
- 같은 패키지뿐만 아니라 다른 패키지에서도 아무런 제한 없이 사용할 수 있다.
- 가장 제한이 적은 접근 수준을 제공하며, 주로 API와 같은 외부에서 사용될 기능에 사용된다.
접근 제어자의 중요성
- 캡슐화와 데이터 은닉 : 접근제어자를 사용하여 클래스의 내부 데이터를 보호하고, 외부에서의 불필요한 접근을 방지한다.
- 유지보수성 : 클래스의 내부 구현을 변경해도, 접근 제어를 통해 외부 인터페이스는 그대로 유지할 수 있어, 시스템의 유지보수성이 향상된다.
- 재사용성 : 적정한 접근 제어를 통해, 클래스를 더 안전하게 재사용할 수 있다.
'Java' 카테고리의 다른 글
[Java] 오버로딩 & 오버라이딩(Overloading & Overriding) (0) | 2024.04.09 |
---|---|
[Java] 생성자(Constructor) (0) | 2024.03.31 |
[Java] Getter&Setter (0) | 2024.03.31 |
[Java] 스택(Stack)과 힙(Heap) (0) | 2024.03.24 |
[Java] 삼항 연산자(조건 연산자) (0) | 2024.03.18 |