반응형
패키지와 접근 제어자: 개념 및 자바에서의 활용
자바(Java) 프로그래밍에서 **패키지(package)**와 **접근 제어자(access modifier)**는 코드 구조화와 보안을 위해 중요한 역할을 합니다. 이 글에서는 두 개념을 설명하고, 자바에서 이를 다루는 방법을 예시와 함께 살펴보겠습니다.
패키지(Package)란?
패키지는 클래스를 그룹으로 묶는 논리적인 단위입니다. 패키지를 사용하면 다음과 같은 장점을 얻을 수 있습니다:
- 코드의 체계화: 관련된 클래스를 함께 묶어 코드의 가독성과 관리성을 높입니다.
- 클래스 이름 충돌 방지: 서로 다른 패키지에 같은 이름의 클래스를 정의할 수 있습니다.
- 접근 제어: 패키지를 기준으로 클래스와 멤버의 접근 권한을 제한할 수 있습니다.
패키지 선언 방법
패키지는 소스 파일의 최상단에 선언하며, package
키워드를 사용합니다.
package com.example.project;
public class MyClass {
public void display() {
System.out.println("패키지 예제입니다.");
}
}
패키지 사용 방법
다른 패키지의 클래스를 사용하려면 import
키워드를 사용하거나, 클래스 이름 앞에 패키지 이름을 명시합니다.
import com.example.project.MyClass;
public class Main {
public static void main(String[] args) {
MyClass myClass = new MyClass();
myClass.display();
}
}
기본 패키지
패키지를 선언하지 않으면 기본 패키지(default package)에 속합니다. 그러나 기본 패키지는 권장되지 않습니다.
접근 제어자(Access Modifier)란?
접근 제어자는 클래스, 메서드, 변수의 접근 범위를 결정하는 키워드입니다. 자바는 네 가지 접근 제어자를 제공합니다:
public
: 모든 클래스에서 접근 가능.protected
: 같은 패키지 또는 상속받은 클래스에서 접근 가능.default
(아무 접근 제어자도 명시하지 않음): 같은 패키지 내에서만 접근 가능.private
: 선언된 클래스 내에서만 접근 가능.
접근 제어자의 사용 범위
제어자 | 같은 클래스 | 같은 패키지 | 하위 클래스 | 외부 클래스 |
public |
✓ | ✓ | ✓ | ✓ |
protected |
✓ | ✓ | ✓ | ✗ |
default |
✓ | ✓ | ✗ | ✗ |
private |
✓ | ✗ | ✗ | ✗ |
예제: 패키지와 접근 제어자 사용하기
패키지와 클래스 파일 구조
다음은 두 개의 패키지 구조를 사용한 예제입니다:
src/
├── com/
│ └── example/
│ └── MyClass.java
└── app/
└── Main.java
MyClass.java
(패키지: com.example
)
package com.example;
public class MyClass {
public String publicField = "Public Field";
protected String protectedField = "Protected Field";
String defaultField = "Default Field";
private String privateField = "Private Field";
public void displayFields() {
System.out.println("Public: " + publicField);
System.out.println("Protected: " + protectedField);
System.out.println("Default: " + defaultField);
System.out.println("Private: " + privateField);
}
}
Main.java
(패키지: app
)
package app;
import com.example.MyClass;
public class Main {
public static void main(String[] args) {
MyClass myClass = new MyClass();
// 접근 가능한 필드
System.out.println("Public Field: " + myClass.publicField);
// 접근 불가능한 필드 (컴파일 에러 발생)
// System.out.println("Protected Field: " + myClass.protectedField);
// System.out.println("Default Field: " + myClass.defaultField);
// System.out.println("Private Field: " + myClass.privateField);
// 메서드 호출
myClass.displayFields();
}
}
출력 결과
Public Field: Public Field
Public: Public Field
Protected: Protected Field
Default: Default Field
Private: Private Field
마치며
패키지와 접근 제어자는 자바 프로그램의 구조와 보안을 관리하는 데 필수적인 요소입니다. 패키지를 통해 클래스를 논리적으로 그룹화하고, 접근 제어자를 활용하여 데이터의 접근 범위를 제한할 수 있습니다. 이를 잘 활용하면 코드의 유지보수성과 안전성이 크게 향상됩니다. 자바 프로젝트에서 패키지와 접근 제어자를 적절히 활용해보세요!
반응형
'개발 부트캠프 > 백엔드' 카테고리의 다른 글
[Java] 상속, 오버로딩, 오버라이딩 (1) | 2025.01.03 |
---|---|
[Java] static (0) | 2025.01.03 |
[Java] 생성자 (0) | 2025.01.03 |
[Java] Class & Object (클래스 & 객체) (0) | 2025.01.03 |
[Java] GC(Garbage Collection) (2) | 2024.12.06 |