카테고리 없음

Class Public Private Protected

려리군 2009. 9. 9. 20:19

Class는 크게 속성(필드, 멤버변수)을 가지고 있고 그에 맞는 고유의 동작(메소드, 멤버함수)을 합니다.

실세계에 비유를 하자면(그냥 예를 든겁니다...) 자동차라고 하는 클래스가 있습니다.

자동차의 속성으로는 기어, 앞바퀴 각도, 엔진 회전수(rpm)이 있을 수 있습니다.
운전자는 핸들을 돌리고 엑셀레이터나 브레이크를 밟을 수 있습니다.
핸들을 돌리거나 엑셀, 브레이크를 밟는 것은 자동차에 대한 고유 동작으로 생각할 수 있습니다.

Class 자동차
{
// 다음 3줄은 속성...
private 기어;
private 앞바퀴 각도;
private 엔진 회전수;
// 다음 3줄은 동작...
public 핸들을돌린다();
public 엑셀을밟는다();
public 브레이크를밟는다();
}

private는 '개인적인'이라는 뜻입니다. 
개인적이니까 자동차 클래스 내부에서만 접근(access)이 가능합니다.
기어나 앞바퀴나 엔진은 자동차의 중요한 부품이기 때문에 아무나 함부로 조작하면 위험할 수도 있습니다.
그래서 위의 예시처럼 자동차 내부에서만 조작 가능하게 하기 위해 private로 선언했습니다.

public은 '공용의'라는 뜻입니다. private과는 완전히 반대의 뜻입니다.
공용으로 사용하니까 모든 곳에서 접근(access)이 가능합니다.
핸들을 돌리거나 엑셀 브레이크를 밟는 것은 운전자 모두가 조작하는 법을 알아야 되기 때문에 public으로 선언했습니다.

protected는 '보호된'이라는 뜻입니다. 이는 '상속'과 관련된 개념입니다.
상속받는 자식만 접근(access)이 가능합니다.
private와 public의 중간정도의 접근(access)이 가능합니다.

SM3 클래스가 SM5클래스의 자식이라고 가정합시다.
class SM5
{
private a;
protected b;
}
class SM3:SM5
{
}

SM3 클래스 안에서 a는 접근이 불가능하지만
b는 접근이 가능합니다.
b는 자식에게 까지 접근 가능하도록 하기 때문입니다.

출처
http://www.winapi.co.kr/clec/cpp3/27-1-5.htm
지식인에 답변했던 내용...