250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 오블완
- java
- Proxy Object
- Wildcard
- 혼공자바
- 혼공
- HashMap
- Access Modifier
- 혼공학습단
- literal
- 0 시작
- 나도코딩
- 스프링 부트 3
- 접근제어자
- Lazy loading
- 인터페이스
- Spring Data JPA
- 접근 제어자
- 인프런
- noncluster index
- 혼공컴운
- Functional Interfaces
- Interface
- 티스토리챌린지
- dotnet
- types
- cluster index
- 자율학습
- 네트워크
- entrySet
Archives
- Today
- Total
지금을 사는 사람
[Java] 접근 제어자(Access Modifiers) 본문
728x90
소개:
자바에서는 클래스와 클래스의 멤버(필드, 메서드)에 대한 접근을 제어하기 위해 접근 제어자를 사용합니다. 이 블로그에서는 자바의 네 가지 주요 접근 제어자에 대해 알아보고, 각각의 특징과 사용 사례를 살펴보겠습니다.
1. public
접근 제어자
- 특징:
- 어떤 클래스, 패키지에서든 접근이 가능합니다.
public
으로 선언된 클래스의 이름과 파일명은 동일해야 합니다.
- 사용 사례:
- 외부에서 자유롭게 접근해야 하는 클래스, 메서드, 필드에 사용됩니다.
public class PublicClass {
public void publicMethod() {
// 외부에서 접근 가능한 메서드
}
}
2. protected
접근 제어자
- 특징:
- 동일 패키지 내에서는 자유롭게 접근이 가능합니다.
- 상속 관계에 있는 다른 패키지의 클래스에서도 접근이 가능합니다.
- 사용 사례:
- 클래스의 일부 기능을 자식 클래스에게만 노출하고 싶을 때 사용됩니다.
package example;
public class ProtectedClass {
protected void protectedMethod() {
// 상속 관계와 동일 패키지에서 접근 가능한 메서드
}
}
3. default
(package-private) 접근 제어자
- 특징:
- 기본적으로 아무 접근 제어자도 사용되지 않을 때의 기본 값입니다.
- 동일 패키지 내에서만 접근이 가능합니다.
- 사용 사례:
- 특별한 접근 제어가 필요하지 않은 경우, 패키지 내부에서만 사용되는 클래스에 적용됩니다.
package example;
class DefaultClass {
void defaultMethod() {
// 동일 패키지에서만 접근 가능한 메서드
}
}
4. private
접근 제어자
- 특징:
- 동일 클래스 내에서만 접근이 가능합니다.
- 외부 클래스나 하위 클래스에서는 직접 접근이 불가능합니다.
- 사용 사례:
- 클래스 내부에서만 사용되는 내부적인 세부 구현에 적용됩니다.
public class PrivateClass {
private void privateMethod() {
// 동일 클래스에서만 접근 가능한 메서드
}
}
5. 접근 제어자 사용 시 고려 사항
- 최소 권한 원칙(Minimum Access Principle):
- 가장 낮은 접근 권한을 사용하여 필요한 기능만 노출하는 것이 좋습니다.
- 설계의 모듈화:
- 클래스 간의 인터페이스를 명확히 정의하여 각 클래스가 필요한 만큼만 노출하도록 설계합니다.
- 캡슐화 강화:
- 필드는
private
으로 선언하고, 외부에서는 접근자 메서드를 통해 접근하도록 하는 것이 캡슐화를 강화할 수 있습니다.
- 필드는
6. 결론
자바의 접근 제어자는 클래스와 클래스의 멤버에 대한 접근을 효과적으로 제어하는 데 사용됩니다. 적절한 접근 제어자의 선택은 소프트웨어의 보안성과 유지보수성에 큰 영향을 미칩니다. 최소한의 권한으로 필요한 기능만 노출하며, 캡슐화를 강화하여 모듈화된 소프트웨어 설계를 유도하는 것이 좋습니다.
728x90
'Java' 카테고리의 다른 글
[Java] 상수(Constant) (0) | 2023.12.26 |
---|---|
[Java] 접근제어자 Protected와 Default의 차이 (0) | 2023.12.22 |
[Java] 애노테이션(Annotation) (0) | 2023.12.15 |
[Java] JVM (Java Virtual Machine) (0) | 2023.12.12 |
[Java] 컬렉션 (Collection) (1) | 2023.12.12 |