[JAVA] 접근 제한자의 정의 및 종류

Re_Go·2024년 5월 26일
0

JAVA

목록 보기
11/37
post-thumbnail
post-custom-banner

1. 접근 제한자의 뜻

접근 제한자란 요소의 접근을 제한하는 키워드를 의미하며, 주로 객체의 캡슐화, 보안 유지, 유지 보수 등의 목적으로 활용되는데요. 불필요한 정보 노출(필드)과 노출이 필요한 정보 노출(생성자, 메소드)을 제어하기 위한 키워드라고 보시면 됩니다.

자바에서의 접근 제한자는 총 네 가지가 존재하며, 각 접근 제한자에 따라 접근 될 수 있는 레벨(범위)가 달라집니다.

2. public

해당 요소가 같은 패키지 내 클래스 뿐만 아니라 다른 패키지에서도 접근이 가능한 요소임을 의미할 때 사용되는 키워드 입니다. 즉 모든 곳에서 사용이 가능한 멤버임을 의미할 때 사용됩니다.

3. protected

해당 요소가 같은 패키지 내의 클래스 및 하위 클래스(상속을 받는 클래스)에서 접근할 수 있는 요소임을 의미할 때 사용되는 키워드이며, 하위 클래스가 아니거나 다른 패키지일 경우 동일 레벨의 클래스 간 사용을 불허 하지만 다른 패키지 내의 하위 클래스로의 상속은 허용합니다. 주로 어노테이션을 오버라이딩 할 때 보면 해당 어노테이션들은 protected 접근 제한자로 설정된 경우가 많습니다.

4. default

해당 요소가 같은 패키지 내의 클래스에서만 사용이 가능한 요소임을 의미할때 사용되며, 다른 패키지 뿐만 아니라 같은 패키지 내의 상속 받은 하위 클래스조차도 사용을 불허합니다. 접근 제한자를 표시하지 않은 멤버의 경우에는 기본적으로 default 접근 제한자가 적용됩니다.

5. private

해당 요소가 같은 패키지 내의 클래스마저도 사용을 불허하며, 오직 해당 클래스 내에서만 사용이 가능함을 의미하는대 사용되는 키워드 입니다.

public class Person {
    // 1. public으로 선언된 필드
    public String name; // 이름

    // 2. private으로 선언된 필드
    private int age;     // 나이

    // 3. default로 선언된 필드 (접근 제한자를 명시하지 않으면 default로 설정됨)
    boolean marriage; // 결혼 여부

    // 4. protected로 선언된 필드
    protected String address; // 주소

    // 매개변수를 받지 않을 때 생성자를 기본 속성으로 지정
    public Person(){
        this("John Doe", 30, false); // 다른 생성자 호출
    }

    // 전달 받는 매개변수가 있을 때
    public Person(String name){
        this(name, 30, false); // 다른 생성자 호출
    }

    // 전달 받는 매개변수가 있을 때
    public Person(String name, int age){
        this(name, age, false); // 다른 생성자 호출
    }

    // public 생성자
    public Person(String name, int age, boolean marriage) {
        this.name = name;
        this.age = age;
        this.marriage = marriage;
    } 
}
profile
인생은 본인의 삶을 곱씹어보는 R과 타인의 삶을 배워 나아가는 L의 연속이다.
post-custom-banner

0개의 댓글