í�´ëž˜ìФ ìƒ�ì†� ¶
���란?
ê°�체지향 프로그래ë°�ì�˜ 핵심ì �ì�¸ ê°œë…� 가운ë�° 하나.
기존ì�˜ í�´ëž˜ìФ 위ì—�서 새로운 í�´ëž˜ìŠ¤ë¥¼ ìƒ�ì„±í• ìˆ˜ 있는 ëŠ¥ë ¥ì�„ 가르킨다.
즉 ì–´ë–¤ í�´ëž˜ìŠ¤ê°€ 다른 í�´ëž˜ìФì�˜ 성질ì�„ ë¬¼ë ¤ë°›ëŠ” 것.
ê°�체지향 프로그래ë°�ì�˜ 핵심ì �ì�¸ ê°œë…� 가운ë�° 하나.
기존ì�˜ í�´ëž˜ìФ 위ì—�서 새로운 í�´ëž˜ìŠ¤ë¥¼ ìƒ�ì„±í• ìˆ˜ 있는 ëŠ¥ë ¥ì�„ 가르킨다.
즉 ì–´ë–¤ í�´ëž˜ìŠ¤ê°€ 다른 í�´ëž˜ìФì�˜ 성질ì�„ ë¬¼ë ¤ë°›ëŠ” 것.
예))
사람 - ì�´ë¦„, 나ì�´, ì‚´ê³ ìžˆëŠ”ê³³,... (기본í�´ëž˜ìФ)
�장� - �장명,월급... (서브�래스)
학� - 학�ID,... (서브�래스)
�장�->사람<-학�
�장� - �장명,월급... (서브�래스)
학� - 학�ID,... (서브�래스)
�장�-
예2)ìƒ�ì†�í• ê¸°ë³¸í�´ëž˜ìФ 구축하기 ¶
~cpp
#include<iostream.h>
#include<string.h>
#define MAX_LEN 81
class person{
protected:
char fname[MAX_LEN];
char lname[MAX_LEN];
int age;
public:
void set_fname( char fn[] ) { strcpy(fname, fn); };
void set_lname( char ln[] ) { strcpy(lname, ln); };
void set_age( int a ) { age=a; };
char *get_name( char *fullname );
int get_age(void) {return age;};
person(char fn[] = "blank", char ln[] = "blank");
};
person::person( char fn[],char ln[] )
{
strcpy(fname, fn);
strcpy(lname, ln);
age = -1;
}
char *person::get_name(char fullname[])
{
strcpy(fullname, fname);
strcat(fullname, " ");
strcat(fullname, lname);
return fullname;
}
~cpp
int main()
{
char full[MAX_LEN+MAX_LEN];
person cho("Cho", "JaeHwa");
cho.set_age(19);
person blank;
cout<<"\nperson cho : "<<cho.get_name(full);
cout<<endl<<"age : "<<cho.get_age();
cout<<"\nperson blank : "<<blank.get_name(full);
cout<<endl<<"age : "<<blank.get_age();
cout<<endl;
return 0;
}
private ëŒ€ì‹ protected를 사용ì�´ìœ ¶
private는 내부� 멤버함수�서만 엑세스가 가능, 즉 리스팅� 다른 부분�서는 ��터멤버나 값� 엑세스하는 것� 막는다.
하지만 ìƒ�ì†�í•˜ë ¤ë©´ privateê°’ì�„ ì�´ 기본 í�´ëž˜ìФì—�서 ìƒ�ì†�한 í�´ëž˜ìФì—�서 ì§�ì ‘ 엑세스 한는 것ì�„ í˜€ìš©í•˜ê³ ì‹¶ì�„ 것ì�´ë‹¤.
�� protected키워들를 사용해서 현재�래스와 ��하는 �래스�게만 엑세스를 허용한다.
하지만 ìƒ�ì†�í•˜ë ¤ë©´ privateê°’ì�„ ì�´ 기본 í�´ëž˜ìФì—�서 ìƒ�ì†�한 í�´ëž˜ìФì—�서 ì§�ì ‘ 엑세스 한는 것ì�„ í˜€ìš©í•˜ê³ ì‹¶ì�„ 것ì�´ë‹¤.
�� protected키워들를 사용해서 현재�래스와 ��하는 �래스�게만 엑세스를 허용한다.
예2-1) 서브 í�´ëž˜ìФ 추가하기 ¶
~cpp
class employee : public person{
protected:
long salary;
public:
void set_salary( long sal ){ salary=sal; };
long get_salary(){return salary;};
employee(char fn[]="e_black",char ln[]="e_blank");
};
~cpp
employee::employee( char fn[], char ln[]) :person(fn, ln)
{
salary = 0;
}
~cpp
employee park("Park","Ji-sung");
park.set_salary( 100000000);
park.set_age(24);
cout<<"\nEmployee park : "<< park.get_name(full);
cout<<endl<<"age : "<<park.get_age();
cout<<endl<<"salary : "<<park.get_salary();
cout<<endl;










