자바에서 기본적인 부분이지만, 실제로 사용할 때 의미를 파악하지 않고 남발하는 경우가 많아 정리하려 한다.
1) private의 경우
Private 멤버나 메소드를 가지고 있는 클래스를 A라고 하자.
그리고 B라는 클래스가 A를 상속받는다. 이 경우, B 클래스는 private으로 선언된 멤버 혹은 메소드에 접근할 수 없다.
따라서 상속을 받더라도 private한 멤버에는 접근이 불가능 하다.
대신, public 메소드 통해 getter를 만들면 private 멤버를 사용할 수 있다.
2) protected의 경우
Protected 멤버나 메소드를 가지고 있는 클래스를 A라고 하자.
마찬가지로 B라는 클래스가 A를 상속받는다. 이 경우, B 클래스는 protected로 선언된 멤버 혹은 메소드에 접근이 가능하다. B 라는 클래스가 다른 패키지에 선언되었을지라도 A 클래스의 멤버에 접근이 가능하다.
하지만, 다른 패키지의 A 클래스를 상속받지 않은 클래스는 A 클래스의 멤버에 접근할 수 없다. 마치 private 처럼 말이다.