반응형
//****************************************************** // 상속 //****************************************************** // --> 부모로 부터 물려 받는것 !! // --> 이미 구현되어있는 클래스로 부터 물려 받아서 새로운 기능을 확장 !! // --> extends --> 확장 !! // --> 재사용성의 개념을 가장 중요한 개념으로 여긴다 !! // 폭스바겐 // 엔진 // | // 뉴비플 - 폴로 -골프 - 제타 - 파사트 - 티구안 // // 일반화 : 모든 자동차에 적용될수 있는 기능들을 담고 있다. //****************************************************** // 상속 (구현상속) : 부모되는 클래스에 작성한 내용을 자식에서 그대로 물려 받는것 !! // 코드를 상속시켜주는것 을 의미한다 !! #includeusing namespace std; class HumanBase // 사람의 기본적인 속성과 행동을 정의 한다.. { public : int m_No; //식별 번호 int m_age; // 나이 char m_name[20]; // 이름 !! public : HumanBase(){} ~HumanBase(){} void setNo(int no) {m_No = no; } void setAge(int age){m_age = age; } int getNo(){return m_No;} int getAge(){return m_age;} const char * getName(){return m_name;} // 추가적인 행동을 !! }; // 상속을 이용한 자식 클래스의 구현 !! //상속지정자 부모 클래스 !! class Student : public HumanBase { public : int m_No; //식별 번호 int m_age; // 나이 char m_name[20]; // 이름 !! public : HumanBase(){} ~HumanBase(){} void setNo(int no) {m_No = no; } void setAge(int age){m_age = age; } int getNo(){return m_No;} int getAge(){return m_age;} const char * getName(){return m_name;} private: int m_grade ;//학년 char m_major[100]; //전공 public : void Study(){} // 공부 void Circle(){} //동아리활동 }; class Teacher : public HumanBase { private: int m_sal; //연봉 public: void Work(){} }; void main() { Student s; s.Study(); // 행동도 물려받는다 !! s.getAge(); // 속성값도 물려받는다 !! s.m_age = 20; Teacher t; t.getName(); t.m_sal = 200; }
//********************************************** // 상속상속 지정자와 상속의 은폐엄폐 //********************************************** // 95%이상은 public상속이다 !! // --> 부모의 특성을 그대로 물려 받겠다 !! // 상속 !! // --> is-a관계가 성립하는 public상속을 상속 !! #includeusing namespace std; class Base { private: // 클래스 내에서만 사용이 가능 int a; protected : // 자기 클래스내와 자식클래스에서만 접근 !! int b; public : int c; }; class BabyBase : private Base { public : // private protected public void foo() //public 접근 불가 protected public { cout << c << endl; } // protected 접근 불가 protected protected }; // private 접근 불가 private private class BabyBaby : public BabyBase { void goo(){ cout << c << endl; } }; void main() { BabyBase bb; cout << bb.c << endl; }
'C, C++' 카테고리의 다른 글
[C++] 연산자 오버로딩 (0) | 2014.11.18 |
---|---|
[C++] 다형성 (0) | 2014.11.18 |
[C++] this 이해 (0) | 2014.11.18 |
[C++] 캡슐화 (0) | 2014.11.18 |
[C++] static 키워드, 멤버 함수와 활용 (0) | 2014.11.18 |