패키지 및 접근 제어자 (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 프로그래밍에서 중요합니다.