회원가입

접근 제어자 - 사용 (1)

Beany 2024-09-17

접근 제어자 - 사용


접근 제어자 사용 - 필드, 메서드

다양한 상황에 따른 접근 제어자를 확인해보자.

지금부터는 패키지 위치가 매우 중요하다. 패키지 위치에 주의하자.

 

AccessData

package access.a;

public class AccessData {
    public int publicField;
    int defaultField;
    private int privateField;

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

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

    private void privateMethod() {
        System.out.println("privateMethod() 호출됨." + privateField);
    }

    public void innerAccess() {
        System.out.println("내부 호출");
        publicField = 100;
        defaultField = 200;
        privateField = 300;
        publicMethod();
        defaultMethod();
        privateMethod();
    }
}

패키지 위치는 package access.a 이다. 패키지 위치를 꼭 맞추어야 한다. 주의하자.
순서대로 public, default, private 을 필드와 메서드에 사용했다.
마지막에 innerAccess() 가 있는데, 이 메서드는 내부 호출을 보여준다. 내부 호출은 자기 자신에게 접근하는 것이다. 따라서 private 은 포함한 모든 곳에 접근할 수 있다.

 

이제 외부에서 이 클래스에 접근해보자.

AccessInnerMain

package access.a;

public class AccessInnerMain {
    public static void main(String[] args) {
        AccessData accessData = new AccessData();

        // 호출 가능
        accessData.publicField = 100;
        accessData.publicMethod();

        // 호출 가능
        accessData.defaultField = 200;
        accessData.defaultMethod();

        // 호출 불가
        // accessData.privateField = 300;
        // accessData.privateMethod();

        accessData.innerAccess();
    }
}
publicMethod() 호출됨.100
defaultMethod() 호출됨.200
내부 호출
publicMethod() 호출됨.100
defaultMethod() 호출됨.200
privateMethod() 호출됨.300

 

AccessOuterMain

package access.b;

import access.a.AccessData;

public class AccessOuterMain {
    public static void main(String[] args) {
        AccessData accessData = new AccessData();

        // 호출 가능
        accessData.publicField = 100;
        accessData.publicMethod();

        // 호출 불가
        // accessData.defaultField = 200;
        // accessData.defaultMethod();

        // 호출 불가
        // accessData.privateField = 300;
        // accessData.privateMethod();

        accessData.innerAccess();
    }
}
publicMethod() 호출됨.100
내부 호출
publicMethod() 호출됨.100
defaultMethod() 호출됨.200
privateMethod() 호출됨.300

 

0 0
JAVA
이 공간은 개인 공부를 통해 얻은 정보를 체계적으로 정리하고 공유하는 곳입니다. 학습한 내용, 발견한 지식, 그리고 문제 해결 방법 등을 기록하여 나만의 학습 자료를 구축하고, 필요할 때 쉽게 참고할 수 있는 유용한 자원으로 활용할 수 있도록 합니다.
Yesterday: 456
Today: 214