private : 같은 클래스 내에서만 접근이 가능하다
(default) : 같은 패키지 내에서만 접근이 가능하다 (생략가능)
protected : 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근이 가능하다
public : 접근 제한이 전혀 없다
메서드에 static과 abstract를 함께 사용할 수 없다
static 메서드는 몸통이 있는 메서드에만 사용할 수 있기 때문이다
클래스에 abstract와 final을 동시에 사용할 수 없다
클래스에 사용 되는 final은 클래스를 확장할 수 없다는 의미이고, abstract는 상속을 통해서 완성되어야 한다는 의미이므로 서로 모순되기 때문이다
abstract메서드의 접근 제어자가 private일 수 없다
abstract메서드는 자손 클래스에서 구현하기 위해 접근해야 하기 때문이다
메서드에 private와 final을 같이 사용할 필요는 없다
접근 제어자가 private인 메서드는 오버라이딩될 수 없기 때문이다
이 둘 중 하나만 사용해도 의미가 충분하다