출처: http://juststudy.tistory.com/4 [쓸데없는 생각말고 공부나 해라!]


1.public

부모,자식,그 외의 관점에서 모두 public (접근 가능) 이 된다.

2.private
부모의 관점에서는 private ( 부모클래스에서만 접근 가능 )
자식의 관점에서는 접근 불가

상속시 자식클래스의 object에 포함이 되기는 하나 자식 클래스에서 직접 접근하는 것은 불가능하다.

부모클래스에서 private으로 선언된 것이 변수(vp라 하자)라면, 
부모클래스에서 여기에 접근하는 public 멤버함수(fp라 하자)가 있을 것이다.
자식클래스에서는 vp와 fp 를 모두 상속받는데, 자식클래스에서 fp 를 통해 vp를 접근할 수 있다.
자식클래스가 fp를 상속받아서 fp가 자식클래스의 함수처럼 되버렸으므로 
부모클래스의 private 변수인 vp를 접근할 수 없지 않을까 라고 생각할 수 있지만 그렇지 않다.
그런식으로 된다면 부모클래스의 public 함수를 자식클래스에서 사실상 사용하지 못한다는 소리가 아닌가.

결론 : 자식 클래스에서 그냥 쓸수 있는 함수는 아무 생각없이 쓰면 된다.

3.protected
부모의 관점에서는 private 이 되고, 
자식의 관점에서는 public이 되며(base. 으로 직접 접근 가능 , base. 안써도 가능 -> 사실 차이가 없어보임), 
그 외의 것들의 관점에서는 private이 된다.

즉, 자식클래스에서도 부모클래스에서 protected로 선언된 멤버를 직접 접근할 수 있다. (private 에서는 불가)


+ Recent posts