- static(멤버변수, 메서드, 초기화 블럭)
static 은 공통적인 이라는 의미를 가지고있다.
- 클래스
- 모든 객체에서 공통으로 사용
- 객체를 "생성하지 않아도" 메모리에 로딩됨/생략가능
- 매서드
- 객체생성 없이 호출가능
- static 메서드는 non-static에 접근 불가
- non-static 메서드는 static에 접근 가능
- final(클래스, 메서드, 멤법변수, 지역변수)
final 은 변경될 수 없는 이라는 의미를 가지고 있다.
- final 클래스 : 상속불가 ex: String, Math
- final 메서드 : 오버라이딩 불가
- final 멤버변수 : 변경불가 > 상수 -> 생성자의 매개변수를 활용해 변경가능
- final 지역변수 : 변경불가 > 상수
- abstract(클래스, 메서드)
abstract는 미완성의 의미를 가지고있다.
- 객체 생성 불가
- 매서드의 구현부가 존재하지 않는다
- 인터페이스를 통해 객체 구현의 청사진을 그리는 것
- 접근제어자 : 외부에서의 접근 정도를 나타내는 제어자
- 접근제어자는 클래스, 메서드, 멤버변수에서만 사용한다(지역변수 제외)
- 특히 멤버변수의 경우 개인정보입력 등의 이유로 private을 사용하는 경우가 많다
- PRIVATE : 같은 클래스 내에서만 접근가능
- PUBLIC : 모든 클래스에서 접근가능
- DEFAULT(지정하지 않은경우) : 같은 패키지 내에서 접근가능
- PROTECTED : 다른 패키지의 자손클래스에서 접근가능 (잘안씀)