이번 포스팅에서는
자바의 접근 제한자에 대해 공부해보자.
코드의 제일 첫 부분으로 시작하는 녀석이고,
자바의 제일 기초적인 내용 중 하나인데
그동안 제대로 모른채 사용하고 있었을지도 모른다.
접근 제한자란?
말 그대로, 접근을 제한해 주는 역할을 한다.
클래스를 다른 패키지에서 사용하지 못하게 하거나,
생성자를 호출하지 못하게 하는 등
적절한 기준에 부합하도록 접근을 제한한다.
'접근 제어자' 또는 '접근 지정자' 라고 불리기도 한다.
클래스, 생성자, 메서드, 변수 등
모든 요소에 사용한다.
(지역 변수에는 사용할 수 없다)
어느 기준까지 접근을 제한할 것인지 정해주며,
각각의 접근 제한자마다 그 기준이 상이하다.
접근 제한자를 왜 사용하는가?
자바, 즉 객체 지향 언어의 핵심 요소 중 하나인
'캡슐화'와 관련이 있다.
캡슐화는 항상 은닉화를 전제로 한다.
데이터를 묶어서 요약하고,
내부적인 접근을 허용하지 않는 대신,
사용자에게 편의성을 제공해 주는 것이다.
접근 제한자를 사용함으로써,
데이터에 접근을 제어하며 보호할 수 있다.
접근 제한자의 종류
다음과 같이 4가지 종류가 있다.
public / protected / default / private
● public
제한이 없으며, 외부에서도 자유롭게 접근이 가능하다.
상황에 구애받지 않고 사용하고 싶을 때 사용한다.
+ 다른 개발자들이 사용할 수 있도록
라이브러리 클래스를 개발할 때 필수적으로 사용한다.
인터넷으로 배포되는 라이브러리 클래스 또한,
모두 public 접근 제한을 가지고 있다.
● protected
같은 패키지 & 상속받은 클래스에서 접근이 가능하다.
다른 패키지에서 상속 받을 수 있게끔 할 때 사용한다.
● default
같은 패키지 내에서만 접근이 가능하다.
접근 제한자를 따로 작성하지 않으면
default 로 취급된다.
종종 default 접근 제한자는 취급하지 않고
3가지 종류만 있다고 이야기하기도 한다.
● private
같은 클래스 내에서만 접근이 가능하다.
'사적인' 이라는 사전적 의미답게
가장 보수적인 접근제한자이다.
그렇기에,
완전히 폐쇄적인 상황에서 사용한다.
한 눈에 보는 접근 제한자의 범위
동일 Class | 동일 package | 상속받은 Class | 제한 없음 | |
private | O | |||
default | O | O | ||
protected | O | O | O | |
public | O | O | O | O |
+ 추가적인 특징
생성자에서의 접근 제한자는 예외적인 경우가 있다.
생성자를 따로 작성해주지 않으면,
컴파일러에 의해 기본 생성자가 제공된다.
(클래스-(2) 포스팅에서 배웠다)
이때, 자동으로 생성되는 기본 생성자의 접근 제한자는
해당 클래스의 접근 제한자와 동일해진다.
이번 포스팅에서는 접근 제한자에 대해 알아보았다.
앞으로는 접근 제한자를 골똘히 생각해가며 사용할 것 같다.
'Java (자바)' 카테고리의 다른 글
[Java] 배열 Array (1) - 배열 기초 예제 / 1차원, 2차원 배열 (0) | 2022.09.28 |
---|---|
[Java] 조건문 - switch case 문 / if, switch 차이점 (0) | 2022.09.27 |
[Java] Thread (3) - 스레드 정지, 멈춤, 제어 / stop(), interrupt() (1) | 2022.07.08 |
[Java] Thread (2) - 스레드 사용 예제 : 타이머 구현 / isAlive() 메서드 (0) | 2022.07.08 |
[Java] Thread (1) - 스레드란 무엇인가? (0) | 2022.07.08 |