패키지 및 접근 제어자 (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!
}
}
위의 예제에서 MyClass는 com.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 프로그래밍에서 중요합니다.
