클래스 접근 방법은 자바에서 클래스의 멤버(변수, 메서드 등)에 접근하는 방법과 관련된 개념입니다. 접근 제어자는 클래스의 멤버에 대한 접근 권한을 제어하며, 이를 통해 캡슐화(Encapsulation) 원칙을 유지할 수 있습니다. 자바에서 주요 접근 제어자는 public, protected, private, 그리고 디폴트(패키지-프라이빗)입니다.
정의: public으로 선언된 멤버는 클래스 외부에서 접근할 수 있습니다.
용도: 외부 클래스에서 해당 멤버를 자유롭게 사용해야 할 때 사용합니다.
public class MyClass {
public int myPublicVar; // 클래스 외부에서 접근 가능
public void myPublicMethod() {
// 클래스 외부에서 접근 가능
}
}
정의: protected로 선언된 멤버는 같은 패키지 내의 다른 클래스와 상속받은 자식 클래스에서 접근할 수 있습니다.
용도: 상속 관계에 있는 클래스에서 접근할 수 있도록 할 때 사용합니다.
public class MyClass {
protected int myProtectedVar; // 같은 패키지와 자식 클래스에서 접근 가능
protected void myProtectedMethod() {
// 같은 패키지와 자식 클래스에서 접근 가능
}
}
정의: private으로 선언된 멤버는 해당 클래스 내에서만 접근할 수 있습니다.
용도: 클래스 외부로부터 직접적인 접근을 막고, 캡슐화를 통해 클래스 내부의 데이터 보호를 강화할 때 사용합니다.
public class MyClass {
private int myPrivateVar; // 클래스 외부에서 접근 불가
private void myPrivateMethod() {
// 클래스 외부에서 접근 불가
}
}
정의: 접근 제어자를 명시하지 않으면 디폴트 접근 제어자가 적용됩니다. 디폴트 접근 제어자는 같은 패키지 내의 클래스에서만 접근할 수 있습니다.
용도: 패키지 내에서만 접근이 필요한 멤버에 사용합니다.
class MyClass {
int myPackagePrivateVar; // 같은 패키지 내에서 접근 가능
void myPackagePrivateMethod() {
// 같은 패키지 내에서 접근 가능
}
}
public 클래스: public으로 선언된 클래스는 패키지와 관계없이 모든 클래스에서 접근할 수 있습니다.
public class PublicClass {
// ...
}
디폴트(패키지-프라이빗) 클래스: 접근 제어자가 명시되지 않은 클래스는 동일 패키지 내에서만 접근할 수 있습니다.
class PackagePrivateClass {
// ...
}
정의: 인스턴스 멤버는 클래스의 인스턴스(객체)를 통해 접근합니다.
public class MyClass {
public int instanceVar; // 인스턴스 변수
public void instanceMethod() {
// 인스턴스 메서드
}
}
MyClass obj = new MyClass();
obj.instanceVar = 10; // 인스턴스 멤버에 접근
obj.instanceMethod();
정의: 정적 멤버는 클래스 자체에 속하며, 클래스 이름을 통해 접근할 수 있습니다. 객체를 생성하지 않고도 접근 가능합니다.
public class MyClass {
public static int staticVar; // 정적 변수
public static void staticMethod() {
// 정적 메서드
}
}
MyClass.staticVar = 20; // 정적 멤버에 접근
MyClass.staticMethod();
위의 설명을 통해 클래스와 멤버에 대한 접근 제어를 이해하고 적절한 접근 제어자를 사용하여 데이터의 캡슐화와 보호를 강화할 수 있습니다.