C++

[class] C++ - Inheritance (상속)

1,776

목차

  1. C++ 상속 (derived class, base class)
  2. 다단계 상속 (Multilevel Inheritance) - 부모 / 자식 / 손자
  3. 다중 상속 (Multiple Inheritance) - (부모1,부모2) / 자식
  4. protected 접근지정자 (protected Access Specifiers)


C++ 상속 (derived class, base class)

 

C++에서는 한 클래스에서 다른 클래스로 (속성・메소드) 상속 가능.


※ 상속 장점: 

① 기존 코드 재사용 가능. ★

② 다형성 (= 상속한 메서드로 다른 작업 수행).

 


 

1.

자식클래스

= 다른 클래스를 상속하는 클래스.

= subclass (서브클래스 = 하위클래스)

= Derived Class (파생클래스)

 

부모클래스

= 다른 클래스에 의해 상속되는 클래스.

= superclass (수퍼클래스 = 상위클래스)

= Base Class (기본클래스)

 

2.

: (콜론) 기호 사용해 상속. (cf. Java 경우, extends 키워드 사용.)

(예) 

class 자식 : 부모 {

    ... 

 


[예제] ExHz (자식)클래스가 Hz (부모)클래스를 상속.

※ 상속해야만 ExHz 클래스에서 Hz 클래스의 site 속성 사용 가능.

※ 파일명: main.cpp

 

#include <iostream>

#include <string>

using namespace std;


class Hz { // 부모클래스

  public: 

    string site = "홈짱닷컴";

    void intro() {

      cout << "코딩언어 그누보드 서버관리 강의 \n" ;

    }

};


class ExHz: public Hz { // 자식클래스

  public: 

    string host = "Homzzang.com";

};


int main() {

  ExHz my;

  my.intro();

  cout << my.site + " " + my.host;

  return 0;

}

 

결과값:

코딩언어 그누보드 서버관리 강의

홈짱닷컴 Homzzang.com

 

다단계 상속 (Multilevel Inheritance) - 부모 / 자식 / 손자

 

부모클래스를 상속한 자식클래스를 또 다시 상속 가능.

즉, 부모 > 자식 > 손자.

 


[예제]

※ 파일명: main.cpp

 

#include <iostream>

#include <string>

using namespace std;


class Hz { // 부모클래스

  public: 

    void intro() {

      cout << "홈페이지 제작관리 강의 \n" ;

    }

};


class ExHz : public Hz { // 자식클래스

  public: 

    string site = "홈짱닷컴";

};


class ExExHz : public ExHz { // 손자클래스

  public:

    string host = "Homzzang.com";

};


int main() {

  ExExHz my;

  my.intro();

  cout << my.site + " " + my.host;

  return 0;

}

 

결과값:

홈페이지 제작관리 강의 

홈짱닷컴 Homzzang.com

 

다중 상속 (Multiple Inheritance) - (부모1,부모2) / 자식

 

1.

여러 부모클래스에서 동시 상속 가능.

즉, (부모1 + 부모2) > 자식

 

2.

쉼표 ( , ) 이용해 상속할 부모클래스 나열.



[예제]

※ 파일명: main.cpp

 

#include <iostream>

using namespace std;


class Hz1 { // 부모클래스1

  public:

    void intro() {

      cout << "홈페이지 제작관리 강의\n" ;

    }

};


class Hz2 { // 부모클래스2

  public:

    void site() {

      cout << "홈짱닷컴 Homzzang.com\n" ;

    }

};


class ExHz : public Hz1, public Hz2 {

};


int main() {

  ExHz my;

  my.intro();

  my.site();

  return 0;

}


결과값:

홈페이지 제작관리 강의 

홈짱닷컴 Homzzang.com

 

protected 접근지정자 (protected Access Specifiers)

 

클래스 내부 및 상속된 클래스에서도 접근 가능.

 


[예제]

※ 파일명: main.cpp

 

#include <iostream>

using namespace std;


class Hz  {

  protected: 

    string site;

};


class ExHz : public Hz {

  public:

    string host;

    void setSite(string s) {

      site = s;

    }

    string getSite() {

      return site;

    }

};


int main() {

  ExHz my;

  my.setSite("홈짱닷컴");

  my.host = "Homzzang.com";

  cout << my.getSite() << " " << my.host;

  return 0;

}

 

결과값: 홈짱닷컴 Homzzang.com

주의: 문자열은 큰따옴표로 묶음. (※ 작은따옴표 사용 시 에러 발생.)



분류 제목
basic C++ - Home (입문) - 추천 링크
basic C++ - Intro (소개) - 용도・특징
basic C++ - Start (시작) - Code::Blocks (코드 블럭스) 설치/실행/세팅. ※ 한글 깨짐 해…
basic C++ - Syntax (구문)
basic C++ - Output (출력)
basic C++ - New Lines (줄바꿈)
basic C++ - Comment (주석)
basic C++ - Variable (변수) ★ ※ 상수
basic C++ - User Input (사용자 입력)
basic C++ - Data Type (데이터 타입) - 자료형
basic C++ - Operator (연산자)
basic C++ - String (문자열)
basic C++ - Math (수학)
basic C++ - Boolean (참거짓)
basic C++ - If ... Else - (이프 조건문) ★
1/3
목록
 홈  PC버전 로그인 일본어
웹디자인언어 1
서버관리언어
고급코딩언어
그누보드
제작의뢰
Q&A
커뮤니티 7
웹유틸
회원센터
홈짱 PC버전 로그인