티스토리 뷰

객체지향 프로그래밍

7. 상속

oraclian 2016. 11. 15. 17:05

1. C++ 에서 부모클래스를 ( 기본 클래스 )라 하고, 자식클래스를 ( 파생 클래스 )라 한다.


2. 예제 8-1 소스코드, 실행결과, 주석

소스코드, 주석

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include <iostream>
#include <string>
using namespace std;
 
class Point { // 2차원 평면에서 한 점을 표현하는 클래스 Point 선언
    int x, y; //한 점 (x,y) 좌표값
public:
    void set(int x, int y) { this->= x; this->= y; }
    void showPoint() {
        cout << "(" << x << "," << y << ")" << endl;
    }
};
 
class ColorPoint : public Point { // (2) 2차원 평면에서 컬러 점을 표현하는 클래스 ColorPoint. Point를 상속받음
    string color;// 점의 색 표현
public:
    void setColor(string color)  {    this->color = color; }
    void showColorPoint();
};
 
void ColorPoint::showColorPoint() {
    cout << color << ":";
    showPoint(); // (1) Point의 showPoint() 호출
}
 
int main() {
    Point p; // 기본 클래스의 객체 생성
    ColorPoint cp; // 파생 클래스의 객체 생성
    cp.set(3,4); // (2)  기본 클래스의 멤버 호출
    cp.setColor("Red"); // (3) 파생 클래스의 멤버 호출
    cp.showColorPoint(); // (3) 파생 클래스의 멤버 호출
    system("pause");
}
cs

실행결과

 (1) 파생 클래스에서 기본클래스 멤버 접근

파생 클래스는 상속을 통해 기본 클래스의 멤버를 자신의 멤버로 확장한다. 파생 클래스의 멤버들을 기본 클래스의 private 멤버 외에 모든 멤버를 접근할 수 있다.


 (2) 기본클래스의 상속과 접근

기본 클래스의 private 멤버도 파생클래스에 상속된다. 파생 클래스의 객체가 생길 때 파생 클래스의 객체 내에 생성된다.

기본클래스에 선언된 private 멤버는 파생 클래스에 상속되고 파생 클래스의 객체에도 포함되지만 파생 클래스의 어떤 함수에서도 직접 접근할 수 없다.


 (3) 클래스 외부에서 파생클래스의 멤버호출

main() 함수와 같이 파생 클래스의 외부에서는 파생 클래스 객체의 public 멤버와 기본 클래스의 public 멤버를 모두 접근할 수 있다.
기본 클래스의 함수들을 상속을 통해서 파생 클래스의 멤버로 확장되기 때문에 외부에서 파생 클래스의 멤버처럼 기본 클래스의 멤버들이 다루어진다.


3. 상속의 종류


   (1) public 상속: 기본 클래스를 public으로 상속받으면, 기본 클래스의 protected, public 멤버들은 접근 지정 변경 없이 파생 클래스에 그대로 상속 확장된다.

   (2) protected 상속 : 기본 클래스를 protected로 상속받으면, 기본 클래스의 protected, public 멤버들은 모두 protected 접근 지정으로 변경되어 파생 클래스에 상속 확장된다.

   (3) private 상속 : 기본 클래스를 private로 상속받으면, 기본 클래스의 protected, public 멤버들은 모두 private 접근 지정으로 변경되어 파생 클래스에 상속 확장된다.

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함