본문 바로가기
C++

protected 멤버

by 상레알 2009. 1. 15.

"protected 멤버는 외부에서 보면 private으로 보이고, 상속 관계에서 보면 public으로 보인다"

"protected 멤버는 private 멤버와 똑같다. 다만, private 멤버와 달리 상속 관계에 놓여 있는 경우에 접근을 허용
한다."

-같은말;ㅋㅋ

===================================================================================================


~~~~좋은 클래스 디자인 기법에 해당하는 객체지향의 다소 원론적이 이야기~~~~


클래스를 디자인하는데 있어서 중요한 것 중 하나가  결합도를  낮추는것이다. 결합도란 두 개의 클래스가 서로 얼마나 긴밀하게 연결 되어 있느냐를 의미한다. 긴밀한 연결이라니까 느낌상 좋게 느껴지나? 이는 결코 좋은 것이 아니다.
결합도가 높다는 것은 프로그램의 변경이 어렵다는 의미이기 떄문이다.

예를 들어서 A 클래스와 B클래스 간의 결합도가 상당히 높다고 가정해 보자. 그렇다면 A클래스의 변경은 B 클래스의 변경으로 이어지기 마련이다. 마찬가지로 B클래스의 변경은 A 클래스의 변경으로 이어지기 마련이다. 만약에 A와 B 클래스 사이에 결합도가 낮다면, A클래스의 변경은 B 클래스의 변경을 요구하지 않는다.

Derived클래스에서 Base클래스의 멤버 변수에 직접 접근하는것은 일반적으로 결합도를 높이는 결과를 가져오기 때문에 좋은 평가를 받지는 않는다( 모든상황에 있어서 그렇다는것은 아니다.)

반면 public 멤버 함수를 통한 접근은 멤버 변수에 직접 접근하는것에 비하면 상대적으로 결합도를 덜 높인다고 이야기 할 수 있다. 





 상속의 유형에 따른 접근 권한의 변경

                   상속형태
Base 클래스

public 상속

protected 상속

private 상속

public 멤버

public

protected

private

protected 멤버

protected

protected

private

private 멤버

접근 불가

접근 불가

접근 불가




'C++' 카테고리의 다른 글

상속된 객체와 참조의 관계  (0) 2009.02.03
상속된 객체와 포인터의 관계  (0) 2009.02.03
상속의 조건  (0) 2009.01.19
클래스...  (0) 2009.01.16
상속을 하는 이유  (0) 2009.01.16
상속!!  (0) 2009.01.15
explicit &&&& mutable  (0) 2009.01.15
클래스와 Static  (0) 2009.01.15
클래스와 const  (0) 2009.01.14
복사 생성자가 호출되는 시점  (0) 2009.01.08