ABOUT

성능과 운영 안정성을 함께 끌어올리는 개발자입니다.

92% Positional Error Reduction
79% p95 Latency Improvement
90%+ Long Tasks Reduction

2022.02 · 한국장학재단

우수 멘티

한국장학재단 사회 리더 대학생 멘토링 IT

2022.10 · 동작구청

우수 인재상

동작구청 우수 SW 인재

2025.05 · (주) 그랩

프로그래밍 우수상

(주) 그랩 우수 프로그램 개발

2025.05 · AWSKRUG

AWS한국사용자모임 발표

AI agent 스크립트 튜닝 관련 발표

ComputerScience

Development

Engineering

Trouble Shooting

GUESTBOOK

첫 마음부터
함께 나누는 온기

방명록 작성하러 가기

SUBSCRIBE

최신소식을
편하게 만나보세요.

접근 제어자

 
 

제어자

제어자에는
접근 제어자기타 제어자가 있습니다.

What ?

접근 제어자

💡 클래스, 메서드, 변수, 생성자 선언 시 접근 범위를 제어하는 키워드입니다.

 

💡  public, protected, default(생략), private로 인해 접근 범위가 달라집니다.

 

💡 클래스, 메서드 그리고 변수에 사용 가능한 접근 제어자가 정해져 있습니다.


How ?

접근 제어자 

💡 선언부에 접근 제어자를 추가해 접근 범위를 정의합니다.
// 클래스
public class ExamplePublic { 
  // 변수
  protected int value; 
  // 생성자
  default ExamplePublic(int value){...}
  // 메서드
  private void getValue() {...}
}​


종류

public

💡 프로그램 어디서나 접근가능합니다.

 

💡 선언된 클래스 멤버는 외부로 공개되어 API에서 사용되며, 공개 메서드 클래스 적합합니다.

 

💡 private 와 프로그램 사이의 인터페이스 역할을 수행합니다. 

protected

💡 같은 패키지자식 클래스(상속 관계)에서 접근이 가능합니다.

 

💡 클래스 선언 시에는 사용할 수 없습니다.

 

💡 다른 패키지여도 상속 관계라면 접근 가능합니다.

// 상속 관계 부모 클래스
package parent;

public class Parent {
  protectet int protecteResult = 4;
  
  protected void protectedMethod(){
	...
  }
}

// 다른 패키지의 자식 클래스
package child;

import parent.Parent;

public class Child extends Parent {
    public void accessParent() {
      // 상속 시 protected 멤버에 접근 가능
      System.out.print(protecteResult);
      protectedMethod();
    }
}

 

default (생략)

💡 같은 패키지에서만 사용할 수 있습니다.

 

💡  기본 값으로 접근 제어자를 생략하면, 기본적으로 적용됩니다.

private

💡 가장 제한적인 접근 제어자로 동일힌 클래스에서만 사용 가능합니다.

 

💡 접근 시, getter와 setter 메서드를 통해 제어된 방식을 구현할 때 사용합니다.

 

💡 클래스 선언 시에는 사용할 수 없습니다.

 


접근 가능 여부

 

접근 제어자 동일
클래스
동일
패키지
자식
클래스
전체 
클래스
접근 제한
public 없음
 protected 자식 클래스가 아닌
다른 패키지 
default (생략) 다른 패키지에
소속된 클래스
private  외부 클래스

 


적용대상

접근 제어자 적용 대상
public 클래스, 필드, 생성자, 메소드
protected 필드, 생성자, 메소드
default(생략) 클래스, 필드, 생성자, 메소드
private 필드, 생성자, 메소드

 


Why ?

접근 제어자

💡 데이터 캡슐화를 합니다.

 

💡 데이터 무결성 가지고 상실 코드 및 오류를 방지합니다.

public class Person {
    public String name; // 접근 가능
}

Person person = new Person();
person.name = null; // 잘못된 값 설정 가능​

 

💡 접근 범위 제어로 모듈화와 유지보수성 향상시킵니다. 

 

💡 상속과 다형성 지원합니다.

 

💡 팀 협업에서의 코드 설계 규칙을 정해 개발의 효율을 높힙니다.

 

💡 코드를 외부로 노출하지 않아 보안성을 높힙니다.


 

728x90