: 클래서, 필드, 생성자, 메서드 앞에 사용하여 기능 또는 사용 여부를 제어하는 키워드
final | static | abstract | |
---|---|---|---|
- 최종 기능 제한 수식어 / - 주로 안드로이드 앱 프로그래밍에서 사용 | 정적 기능 제한 수식어 | 추상 기능 제한 수식어 | |
class | 상속 X, 슈퍼클래스 불가 | 사용 불가 (상속 X) | 객체 생성 불가 |
field | - 재초기화 불가 / - 선언과 동시에 대입하거나 생성자로 초기화만 가능 | - 정적 필드 : 클래스 자체에만 객체 생성, 객체 생성 없이 [클래스명.필드명]으로 사용 가능 | 사용 불가 |
local variable | - 재초기화 불가 / - 선언과 동시에 대입하지 않아도 됨 | 사용 불가 | 사용 불가 |
method | 오버라이딩 불가 | - 정적 메서드 : 클래스 자체에만 객체 생성, 객체 생성 없이 [클래스명.메서드명]으로 사용 가능 / - 동일 클래스에서는 정적 필드와 정적 메서드만 사용 가능 / - 클래스의 객체를 생성한다면 정적 필드,메서드가 아니더라도 사용 가능 / -오버라이딩 할 경우 static 사용 | - 추상 메서드 : 메서드 본체 X, 상속한 클래스에서 추상 메서드 구현해야 함 |
ex)
public | protected | default | |
---|---|---|---|
클래스 내부 | O | O | O |
동일 패키지 | O | O | O |
서브 클래스 | O | O | X |
다른 패키지 | O | X | X |
모르겠으면 필드만 private, 나머지는 public ㅎ