프로그래밍/C++
C++ 문법 - 상속 접근제어 변경
게으른구름
2018. 1. 22. 00:43
< 접근제어자 >
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으로 바꿔서 상속받았습니다.