접근 제어자

#JAVA #접근제어 #클래스와 객체
Dec 31, 2023
접근 제어자

1. 접근제어자란?

  • 접근 제어(access control)는 객체 지향 프로그래밍에서 클래스의 멤버(변수, 메서드)
대한 외부로부터의 접근을 제어하는 개념이다. (객체 지향 프로그래밍의 핵심적인 부분이다.)
  • 즉, 클래스, 멤버 변수, 메서드 등의 접근 가능성을 제어하는 것.
  • 접근 제어자를 사용하여 클래스의 멤버 변수와 메서드의 접근 범위를 제어할 수 있다.
  • 이를 통해 캡슐화를 구현하고, 외부에서 직접 접근하지 못하도록 보호 (정보은닉) 할 수 있다
  • 코드의 유지 보수성과 재사용성을 향상시킬 수 있음
 
이러한 접근 제어 지시자를 통해 클래스의 멤버에 대한 접근을 제한함으로써 정보 은닉, 캡슐화, 보안 등의 프로그래밍 원칙을 지키고 안정성을 확보할 수 있다.

2. 접근제어자의 종류

notion image
 

[접근제어자 4가지 종류]

2-1. public (공개)

공용이라는 의미로 public 을 멤버 앞에 붙이면 누구나 자유롭게 접근 할 수 있다.
어떤 클래스에서든 접근할 가능하고 클래스 외부에서도 접근 가능하며,
다른 패키지에서도 접근 가능하다.
public class Example { public int publicVariable; public void publicMethod() { // 메서드 내용 } }
 

2-2. private (비공개)

전용이라는 의미로 private 를 붙이면 클래스 안에서만 접근이 가능한 멤버가 된다.
동일한 클래스 내에서만 접근할 수 있고 다른 클래스에서는 접근할 수 없다.
public class Example { private int privateVariable; private void privateMethod() { // 메서드 내용 } }
💡
주민등록번호와 같은 민감한 정보들에게 private를 사용한다.
접근 제어자
해당 클래스 안
패키지
자식 클래스
전체
public
O
O
O
O
protected
O
O
O
X
없음 (default)
O
O
X
X
private
O
X
X
X
 

2-3. protected (보호)

protected 붙이면 멤버는 부모 클래스와 자식 클래스만이 접근할 수 있다.
같은 패키지 내에서는 접근할 수 있으며, 상속 관계 접근 가능
💡
하위 클래스에서 접근 가능 = 상속 관계에 있는 클래스들 사이에서의 접근 가능성
public class Example { protected int protectedVariable; protected void protectedMethod() { // 메서드 내용 } }
 

2-4. default (아무 지정 없음)

해당 패키지 내에서만 접근할 수 있습니다.
접근 제어 지시자를 명시하지 않으면 기본(default)으로 설정된다.
패키지는 서로 관련된 클래스들은 하나로 묶은 것이다.
class Example { int defaultVariable; void defaultMethod() { // 메서드 내용 } }

 
💡
필드는 특별한 이유가 있는게 아니면 무조건 private (상수를 제외하고는 필드에 public 사용 XXX)
 
Share article

Coding_study