접근 제한자
접근 제한자는 외부로부터 데이터를 보호하고, 외부에는 불필요한(내부적으로만 사용되는) 부분을 감추기 위해 사용한다.
접근제한자의 종류
접근 제한자에는 public, protected, default, private이 있다.
생성자,메서드,필드의 접근 제한자로는public,protected,default,private이 모두 가능하다.클래스의 접근 제한자로는private,public만 가능하다.
public > protected > default > private 순으로 많은 접근을 허용함
private
- 모든 외부 호출을 막음
- 클래스 안으로 속성과 기능을 숨길 때 사용
- 외부 클래스에서 private 클래스 내부의 기능을 호출할 수 없음
default (=package-private)
- 같은 패키지 안에서만 호출을 허용
- 패키지 안으로 속성과 기능을 숨길 때 사용
- 외부 패키지에서 해당 패키지 내부의 기능을 호출할 수 없음
protected
- 같은 패키지 안에서 호출을 허용하고, 서로 다른 패키지이더라도 상속 관계에 있으면 호출을 허용
- 상속 관계로 속성과 기능을 숨길 때 사용
- 상속 관계가 아닌 곳에서 해당 기능을 호출할 수 없음
public
- 모든 외부 호출을 허용
- 기능을 숨기지 않고 어디서든 호출 가능하도록 공개함
✏️ 참고
- 접근 제어자를 명시하지 않으면, 기본적으로
default가 적용됨 (접근 제어자의 기본값은 default!) - 접근 제어자의 핵심은 속성과 기능을 외부로부터 숨기는 것!
클래스에 접근 제한자 사용
- 클래스 레벨의 접근 제어자는
public,default만 사용 가능 - public 클래스는 반드시 파일명 == 이름 !
- 하나의 자바 파일에는 public 클래스는 하나만 등장 가능
- 하나의 자바 파일에 default 접근 제어자를 사용하는 클래스는 무한 생성 가능
캡슐화
객체 지향 프로그래밍의 4가지 특징(추상화, 상속, 다형성, 캡슐화) 중 하나이다.
접근제한자는 캡슐화를 실현 가능하게 해준다!
캡슐화란?
데이터와해당 데이터를 처리하는 메서드를 하나로 묶어 캡슐로 만들어서 외부에서의 접근을 제한하는 것이다.- 이때, 접근 제한자가 외부에서의 접근을 제한할 수 있도록 해준다.
- 속성과 기능을 하나로 묶고, 외부에서 꼭 필요한 기능만 노출하고 나머지는 모두 내부로 숨긴다.
캡슐화의 목적
- 클래스에 정의된 속성과 기능들을 외부로부터 보호한다.
- 필요한 부분만 외부로 노출될 수 있도록 한다.
각 객체의 고유의 독립성과 책임 영역을 안전하게 지키고자 함!
좋은 캡슐화
- 캡슐화에서 필수적으로 숨겨야 하는 것은 속성(데이터)이다.
객체 = 속성(데이터) + 기능(메서드)
속성(데이터): 객체의 데이터는 객체가 제공하는 기능인 메서드를 통해서 접근해야 한다.기능(메서드): 사용자 입장에서 꼭 필요한 기능만 외부에 노출하고, 나머지 기능은 모두 내부로 숨겨야 한다.
📌 좋은 캡슐화 == 데이터는 모두 숨기고, 꼭 필요한 기능만 노출하는 것
캡슐화 vs. 정보 은닉
정보 은닉: 객체지향 언어적 요소를 활용하여 객체에 대한 구체적인 정보를 노출시키지 않도록 하는 기법- 정보 은닉의 종류
업캐스팅: 객체의 구체적인 타입 은닉캡슐화: 객체의 필드 및 메소드 은닉인터페이스 & 추상 클래스: 구현 은닉
- 정보 은닉 기법 중 하나가 캡슐화인 것이다. (캡슐화 != 정보은닉)
'Java > 문법' 카테고리의 다른 글
| [JAVA 중급 스터디 - 4~5회차] static (0) | 2024.03.20 |
|---|---|
| [JAVA 중급 스터디 - 3회차] 자바의 메모리 구조 (0) | 2024.03.09 |
| [JAVA 중급 스터디 - 1회차] 기본형/참조형, Wrapper Class생성자, 패키지 (0) | 2024.03.08 |
| [Java] 배열의 공통 원소 집합 구하기 (0) | 2024.03.02 |
| [Java 문법] Scanner보다 빠른 BufferedReader, StringTokenizer (0) | 2024.01.29 |