본문 바로가기

프로그래밍/C++

C++ 문법 - 상속 접근제어 변경

< 접근제어자 >


1
2
3
4
5
6
7
8
9
10
11
12
13
class A
{
public:
    int a;
protected:
    int b;
private:
    int c;
};
 
class B : public A {};
class C : protected A {};
class D : private A {};
cs


A를 서로 다른 접근제어자로 상속 받은 3개의 자식 클래스가 있습니다.

각각의 접근제어자는 어떤 역할을 할까요?


상속 시 접근제어자는 자신보다 범위가 더 큰 접근상태를 자기자신으로 바꿉니다.

(public > protected > private)


말로는 어려우니 예제를 통해 알아보겠습니다.


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
35
36
37
38
39
40
41
42
43
44
45
#include <iostream>
 
using namespace std;
 
class A
{
public:
    int a;
protected:
    int b;
private:
    int c;
};
 
class B
{
public:
    int a;
protected:
    int b;
private:
    int c;
};
 
class C
{
protected:
    int a, b;
private:
    int c;
};
 
class D
{
private:
    int a, b, c;
};
 
int main()
{
    cout << "시작" << endl;
    Test first;
    cout << "number : " << first.number << endl;
    return 0;
}
cs


B는 public으로 상속받았기 때문에 public보다 범위가 큰 접근상태가 없어서 A를 그대로 상속받았습니다.

C는 protected로 상속받았기 때문에 protected보다 범위가 큰 public을 protected로 바꿔서 상속받았습니다.

D는 private으로 상속받았기 때문에 private보다 범위가 큰 public, protected를 private으로 바꿔서 상속받았습니다.

'프로그래밍 > C++' 카테고리의 다른 글

C++ 문법 - 재귀함수  (0) 2018.01.28
C++ 문법 - 오버로딩  (0) 2018.01.22
C++ 문법 - 소멸자  (0) 2018.01.22
C++ 문법 - 생성자  (0) 2018.01.22
C++ 기초 문법 - 클래스의 상속  (0) 2018.01.16