Modifiers
<Access Modifiers> 하나만 사용 가능
Class
- public 다른 클래스에 의해 접근 가능한 클래스, 즉 접근 제한이 없다.
- default 같은 패키지 내에서만 접근 가능하다.
Attributes, methods and constructors
- public 다른 클래스에서 접근 가능한 코드, 즉 접근 제한이 없다.
- private 같은 클래스 내에서만 접근이 가능하다.
- default 같은 패키지 내에서만 접근 가능하다.
- protected 같은 패키지 내에 자식 클래스에서 접근이 가능하다.
<Non-Access Modifiers>
Class (둘 다 사용 가능)
- final 상속될 수 없는 클래스가 된다.
- abstract 클래스 내에 추상메서드가 선언되어 있음을 나타낸다.
이 클래스로 객체 생성이 불가하다.
Attributes, methods and constructors (하나만 사용 가능)
- final 오버라이딩과 수정이 불가능한 속성과 메서드가 된다.
- static 속성과 메서드가 객체가 아닌 클래스에 속하게 된다. (객체 생성하지 않고 사용 가능)
- abstract 추상클래스 내에서만 사용될 수 있고, 메서드에만 사용된다. (속성에 사용 불가)
메서드는 바디가 없으며, 바디는 자식 클래스에 의해 생성된다.
- transient 객체를 serializing할 때 특정 속성이나 메서드를 건너 뛰기위해 사용한다.
- synchronized 메서드는 한 번에 하나의 스레드에서만 접근할 수 있다.
- volatile 속성 값은 스레드 로컬에 캐시되지 않으며 항상 메인 메모리에서 읽는다.