클래스 접근 방법

sunghyun Hong·2024년 8월 6일

클래스 접근 방법은 자바에서 클래스의 멤버(변수, 메서드 등)에 접근하는 방법과 관련된 개념입니다. 접근 제어자는 클래스의 멤버에 대한 접근 권한을 제어하며, 이를 통해 캡슐화(Encapsulation) 원칙을 유지할 수 있습니다. 자바에서 주요 접근 제어자는 public, protected, private, 그리고 디폴트(패키지-프라이빗)입니다.

1. 접근 제어자

1.1 public

정의: public으로 선언된 멤버는 클래스 외부에서 접근할 수 있습니다.
용도: 외부 클래스에서 해당 멤버를 자유롭게 사용해야 할 때 사용합니다.

public class MyClass {
    public int myPublicVar; // 클래스 외부에서 접근 가능

    public void myPublicMethod() {
        // 클래스 외부에서 접근 가능
    }
}

1.2 protected

정의: protected로 선언된 멤버는 같은 패키지 내의 다른 클래스와 상속받은 자식 클래스에서 접근할 수 있습니다.
용도: 상속 관계에 있는 클래스에서 접근할 수 있도록 할 때 사용합니다.

public class MyClass {
    protected int myProtectedVar; // 같은 패키지와 자식 클래스에서 접근 가능

    protected void myProtectedMethod() {
        // 같은 패키지와 자식 클래스에서 접근 가능
    }
}

1.3 private

정의: private으로 선언된 멤버는 해당 클래스 내에서만 접근할 수 있습니다.
용도: 클래스 외부로부터 직접적인 접근을 막고, 캡슐화를 통해 클래스 내부의 데이터 보호를 강화할 때 사용합니다.

public class MyClass {
    private int myPrivateVar; // 클래스 외부에서 접근 불가

    private void myPrivateMethod() {
        // 클래스 외부에서 접근 불가
    }
}

1.4 디폴트(패키지-프라이빗)

정의: 접근 제어자를 명시하지 않으면 디폴트 접근 제어자가 적용됩니다. 디폴트 접근 제어자는 같은 패키지 내의 클래스에서만 접근할 수 있습니다.
용도: 패키지 내에서만 접근이 필요한 멤버에 사용합니다.

class MyClass {
    int myPackagePrivateVar; // 같은 패키지 내에서 접근 가능

    void myPackagePrivateMethod() {
        // 같은 패키지 내에서 접근 가능
    }
}

2. 클래스의 접근 제어

2.1 클래스 접근 제어자

public 클래스: public으로 선언된 클래스는 패키지와 관계없이 모든 클래스에서 접근할 수 있습니다.

public class PublicClass {
    // ...
}

디폴트(패키지-프라이빗) 클래스: 접근 제어자가 명시되지 않은 클래스는 동일 패키지 내에서만 접근할 수 있습니다.

class PackagePrivateClass {
    // ...
}

3. 인스턴스 멤버와 정적 멤버 접근

3.1 인스턴스 멤버

정의: 인스턴스 멤버는 클래스의 인스턴스(객체)를 통해 접근합니다.

public class MyClass {
    public int instanceVar; // 인스턴스 변수

    public void instanceMethod() {
        // 인스턴스 메서드
    }
}

MyClass obj = new MyClass();
obj.instanceVar = 10; // 인스턴스 멤버에 접근
obj.instanceMethod();

3.2 정적 멤버

정의: 정적 멤버는 클래스 자체에 속하며, 클래스 이름을 통해 접근할 수 있습니다. 객체를 생성하지 않고도 접근 가능합니다.

public class MyClass {
    public static int staticVar; // 정적 변수

    public static void staticMethod() {
        // 정적 메서드
    }
}

MyClass.staticVar = 20; // 정적 멤버에 접근
MyClass.staticMethod();

위의 설명을 통해 클래스와 멤버에 대한 접근 제어를 이해하고 적절한 접근 제어자를 사용하여 데이터의 캡슐화와 보호를 강화할 수 있습니다.

0개의 댓글