✅ 객체(클래스) 상호간에 접근제어가 필요한 이유
- 객체의
상태정보(멤버변수)
는 중요하기 때문에 접근을 못하게 해야한다.(정보 은닉)- 객체의
행위정보(멤버메서드)
는 상호작용을 해야하기 때문에 접근을 허용한다.
A class | B class | |
---|---|---|
상태정보 (멤버변수) | ←→ 불가능 | 상태정보 (멤버변수) |
행위정보 (멤버메서드) | ←→ 가능 | 행위정보 (멤버메서드) |
▶️ 4가지의
접근제한자(Access Modifier)
를 사용한다.
▶️ 클래스를 설계할 때 고려해야 한다.
▶️ 클래스와 클래스 내부에서 만들어지는 멤버에 접근 제한자를 사용할 수 있다.
접근제한자 | 설명 |
---|---|
public | 모든 패키지에서 접근 가능 (모든 클래스는 public) (모든 멤버메서드는 public) |
private | 모든 패키지에서 접근 불가 (자기 자신만 접근 가능) (모든 멤버변수는 private) |
protected | 상속관계에서 하위클래스에서 상위클래스로 접근 가능 |
default | 동일한 패키지에서만 접근 가능 (단어로 존재하지 않음) |
- 서로 기능이 비슷한 클래스들끼리 모아서 관리를 쉽게 하기 위해서 사용(폴더 개념)
- 패키지 외부에서 클래스의 접근을 할 수 없도록 하기 위해서 사용(보안)
- 자바에서 제공해주는
API
도 패키지의 형태로 배포된다.
패키지 이름 | 설명 |
---|---|
java.lang (default package) | 자바에서 자주 사용하는 클래스(String, System 등) |
java.io | 입출력 관련 클래스(InputStream 등) |
java.net | 네트워킹 관련 클래스 |
java.util | 도움을 주는 클래스(Scanner 등) |
java.sql | 데이터베이스 관련 클래스, SQL |
java.math | 수학 관련 클래스 |
jdk → lib → jrt-fs.jar / src.zip
- jrt-fs.jar : 라이브러리 압축파일
- src.zip : 소스파일 // External Libraries > ...