Java Packages and Access Modifiers

패키지 및 접근 제어자 (Packages and Access Modifiers)

패키지 (Packages)

패키지는 관련 있는 클래스와 인터페이스들을 그룹화하는 방법을 제공합니다. Java에서 패키지는 코드의 구조화와 관리를 쉽게 만들어 줍니다.

패키지 정의 및 사용 예제:

// 패키지 선언
package com.example.myapp;

// 클래스 정의
public class MyClass {
    public void display() {
        System.out.println("Hello, Java Packages!");
    }
}

// 다른 패키지에서 사용 예제
// 다른 소스 파일에서는 이 부분이 패키지 선언이 없이 클래스를 선언하면 됩니다.
public class Main {
    public static void main(String[] args) {
        com.example.myapp.MyClass obj = new com.example.myapp.MyClass();
        obj.display(); // 출력: Hello, Java Packages!
    }
}

위의 예제에서 MyClasscom.example.myapp 패키지에 속해 있습니다. 다른 소스 파일에서 Main 클래스는 MyClass를 사용하기 위해 패키지 명을 포함하여 클래스를 호출합니다.

접근 제어자 (Access Modifiers)

접근 제어자는 클래스, 변수, 메서드 및 생성자의 접근 가능성을 제어하는 데 사용됩니다. Java에서는 다음과 같은 접근 제어자들을 제공합니다:

  • private: 같은 클래스 내에서만 접근 가능합니다.
  • default (package-private): 같은 패키지 내에서만 접근 가능합니다. (접근 제어자를 명시적으로 지정하지 않으면 default로 설정됩니다)
  • protected: 같은 패키지 내에서 또는 다른 패키지에 있더라도 하위 클래스에서 접근 가능합니다.
  • public: 모든 곳에서 접근 가능합니다.

접근 제어자 사용 예제:

// 패키지 com.example.myapp 안의 MyClass.java 파일

package com.example.myapp;

public class MyClass {
    private int privateVar; // private 변수

    int defaultVar; // default (package-private) 변수

    protected int protectedVar; // protected 변수

    public int publicVar; // public 변수

    // 메서드들
    private void privateMethod() {
        System.out.println("privateMethod 호출");
    }

    void defaultMethod() {
        System.out.println("defaultMethod 호출");
    }

    protected void protectedMethod() {
        System.out.println("protectedMethod 호출");
    }

    public void publicMethod() {
        System.out.println("publicMethod 호출");
    }
}

위의 예제에서 MyClass 클래스는 다양한 접근 제어자를 사용하여 변수와 메서드의 접근 범위를 설정하고 있습니다.

// 패키지 com.example.other 에서의 Main.java 파일

package com.example.other;

import com.example.myapp.MyClass;

public class Main {
    public static void main(String[] args) {
        MyClass obj = new MyClass();

        // 접근 제어자에 따라 접근 가능한 멤버들 호출
        // obj.privateVar와 obj.privateMethod()는 접근할 수 없음
        // obj.defaultVar와 obj.defaultMethod()는 접근 가능
        // obj.protectedVar와 obj.protectedMethod()는 접근 가능
        // obj.publicVar와 obj.publicMethod()는 접근 가능

        obj.defaultVar = 10;
        obj.defaultMethod(); // 출력: defaultMethod 호출

        obj.protectedVar = 20;
        obj.protectedMethod(); // 출력: protectedMethod 호출

        obj.publicVar = 30;
        obj.publicMethod(); // 출력: publicMethod 호출
    }
}

위의 예제에서 Main 클래스는 MyClass의 객체를 생성하여 다양한 접근 제어자에 따라 멤버 변수와 메서드에 접근합니다. 각 접근 제어자의 범위를 이해하고 적절히 사용하는 것이 Java 프로그래밍에서 중요합니다.

패키지와 접근 제어자는 Java 언어에서 코드의 구조화와 유지보수성을 높이는 데 중요한 역할을 합니다. 패키지는 관련된 클래스들을 그룹화하여 관리할 수 있게 하며, 접근 제어자는 클래스의 멤버들의 접근 범위를 명확히 정의하여 캡슐화와 보안을 강화합니다.

Leave a Reply

Your email address will not be published. Required fields are marked *