반응형
 

패키지와 접근 제어자: 개념 및 자바에서의 활용

자바(Java) 프로그래밍에서 **패키지(package)**와 **접근 제어자(access modifier)**는 코드 구조화와 보안을 위해 중요한 역할을 합니다. 이 글에서는 두 개념을 설명하고, 자바에서 이를 다루는 방법을 예시와 함께 살펴보겠습니다.


패키지(Package)란?

패키지는 클래스를 그룹으로 묶는 논리적인 단위입니다. 패키지를 사용하면 다음과 같은 장점을 얻을 수 있습니다:

  1. 코드의 체계화: 관련된 클래스를 함께 묶어 코드의 가독성과 관리성을 높입니다.
  2. 클래스 이름 충돌 방지: 서로 다른 패키지에 같은 이름의 클래스를 정의할 수 있습니다.
  3. 접근 제어: 패키지를 기준으로 클래스와 멤버의 접근 권한을 제한할 수 있습니다.
패키지 선언 방법

패키지는 소스 파일의 최상단에 선언하며, 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)란?

접근 제어자는 클래스, 메서드, 변수의 접근 범위를 결정하는 키워드입니다. 자바는 네 가지 접근 제어자를 제공합니다:

  1. public: 모든 클래스에서 접근 가능.
  2. protected: 같은 패키지 또는 상속받은 클래스에서 접근 가능.
  3. default (아무 접근 제어자도 명시하지 않음): 같은 패키지 내에서만 접근 가능.
  4. 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

+ Recent posts