객체지향 프로그래밍에서는 객체 상호간에 접근을 제어할 수 있어야한다. 예를 들어 A,B 두 클래스가 가지고 있는 상태와 동작을 상호간에 접근을 허용할 수도 있어야 하고 접근을 막아야 하는 경우도 있기 때문이다.
객체의 상태정보(멤버 변수)는 중요하기 때문에 접근을 못하게 해야한다.(정보은닉)
객체의 행위정보(멤버 메서드)는 상호작용을 해야 되기 때문에 접근을 허용한다.
4가지의 접근 제한자(Access Modifier)를 사용한다.
클래스와 클래스 내부에 만들어지는 멤버 변수에 접근 제한자를 사용할 수 있다.
| 접근제한자 | 설명 |
|---|---|
| public | 모든 패키지에서 접근 가능(모든 클래스 & 메서드는 public) |
| private | 모든 패키지에서 접근 불가(모든 멤버변수 private) |
| protected | 상속관계 중 하위클래스에서 상위클래스에 접근가능 |
| default | 동일한 패키지에서만 접근가능(단어로 존재X) |
서로 다른 패키지에선 public만 접근 가능
동일한 패키지 내에선 public, default만 접근가능(상속관계X)
같은 패키지 안에 있는 클래스들은 기본적으로 다른 클래스에 접근이 가능하다.(default접근O)
| 패키지이름 | 설명 |
|---|---|
| java.lang (default package) | 자바에서 자주 사용하는 클래스(String, System 등) |
| java.io | 입출력 관련 클래스(InputStream 등) |
| java.net | 네트워킹 관련 클래스 |
| java.util | 필요한 부가기능을 지원(Scanner 등) |
| java.sql | DB관련 클래스, SQL |
| java.math | 수학관련 클래스 |