접근 제한자
public
- 같은 패키지
- 다른 패키지
- 대충 아무데서나 접근 가능하다는 뜻
protected
- 같은 패키지
- 다른 패키지라면 subclass에서만 접근 가능
- 클래스에는 사용할 수 없다.
default
- 같은 패키지
- 다른 패키지에서는 subclass라도 접근할 수 없다.
private
- 같은 클래스
- 따라서 클래스에
private이 붙는 건 어불성설
- Singleton pattern에서 유용함
그 외
static
abstract
synchronized
final
기타
- 제한자의 순서는 무관하지만 보통 접근 제한자를 가장 먼저 쓴다.
- 접근 제한자는 한 개만 쓸 수 있고 나머지는 여러 개를 함께 쓸 수 있다.
final class, final method
final class: 클래스 전체를 상속할 수 없음
- Ex)
String, Math
final method: 그 method를 재정의(override)할 수 없음
- 상속도 클래스에 대한 override로 볼 수 있다.
- 이미 완벽해서 재정의할 필요 없는 것들에 쓰인다.
Math.cos() 재정의 할 자신 있음?
할 수 있다고 해도 이미 정확히 정의된 함수이므로 굳이 건드릴 이유가 없다.
왜 함
- 보안 이슈
- 이미 완벽한 것들은 괜히 건드렸다가 오류 나니까 그냥 쓰라는 의미
Math.cos 재정의할 자신 있음?(2)
static
- 굳이 Heap에 객체 만들 필요 없고 그냥 써도 되는 것들
- 통상 util method가 여기에 해당한다.