새소식

반응형
Java/Spring

Java 접근 제한자(접근 제어자)

  • -
반응형

접근 제한자(접근 제어자)란?

Java 접근 제한자는 말 그대로 접근을 제어하기 위한 키워드이다.

여기서 접근이란 클래스 및 메서드 등 이들이가지고 있는 정보를 클래스, 인터페이스 등

다른 패키지에서 사용하지 못하도록 막을 필요가 있다.

또한 객체 생성을 못하게 하거나 필드나 메서드를 사용하지 못하도록 막아야 하는 경우도 있다.

 

이때 접근 제한자 키워드를 사용해 제한할 수 있다.

접근 제한자의 종류에는 public, protected, default, private 접근 제한자가 존재한다.

 

 

접근 제한자 종류

 

public

외부 패키지에 존재하는 클래스들이 자유롭게 사용할 수 있다.

같은 패키지내에서나 다른 패키지에서 자유롭게 접근할 수 있다.

라이브러리 같은 외부 개발자들이 사용할 수 있도록 개발한다면 public 접근 제한을 사용 해야한다.

// 사용예시
public class Test { ... }

 

 

 

protected

같은 패키지 또는 자식 클래스에서 사용할 수 있다.

패키지가 다르더라도 protected 접근 제한자를 사용한 부모클래스를 상속받은 자식클래스는

public 접근 제한자처럼 사용할 수 있다.

 

접근 가능한 범위는 아래와 같다.

1. protected 접근 제한자를 사용한 클래스의 멤버

2. protected 접근 제한자를 사용한 멤버와 같은 패키지

3. protected 접근 제한자 클래스를 상속받은 자식 클래스

 

package com.test;

// protected 멤버 변수를 가지는 A 클래스
public class A {
	protected String test = "다른 패키지에 속한 자식 클래스까지 접근 허용";
}

// A 클래스의 자식클래스
package co.tes;

import com.test.A;

public class B extends A {
    public static void main(String[] args) {
        A a = new A();
        System.out.println(a.test); // 다른 패키지에 속하는 자식 클래스까지 허용
    }
}

default

같은 패키지에 존재하는 클래스들만 접근할 수 있다.

default 접근 제한자는 클래스나 멤버 앞에 명시하지 않는다.

따로 접근 제한자 키워드를 적지 않으며 접근 제한자가 지정되지 않으면 default 접근 제한자가 된다.

 

default 접근 제한자는 같은 클래스의 멤버나 같은 패키지에 속하는 멤버에서만 접근할 수 있다.

 

package com.test;

public class A {
	String test = "같은 패키지 또는 같은 클래스에서 접근 허용";
}

 

 

private

같은 클래스내에서만 접근 가능하다.

보통 public 접근제한자를 가진 클래스에 외부에서 접근할 수 없도록 멤버변수를 private 접근 제한자를 많이 사용한다.

 

public class PrivateTest {
	private String test = "같은 클래스만 접근 허용";
    private String testMethod() {
		return this.test;
	}
}

 

 

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.