C++
상속(3)
akongman
2024. 2. 13. 20:18
접근제어지정 방식 에서 protected
멤버변수의 접근제어지정 방식을 public, private, protected 세가지가 있다고 앞에서 언급한 적이 있었다.
public은 전역적으로 누구나 사용할 수 있게 하는 그런 의미라면
private로 지정된 것은 해당 멤버는 해당 클래스 내에서만 사용이 가능해요 라는 뜻이다.
따라서 상속을 했어도 직접적인 접근이 불가능하다.
protected 역시 private의 성격이 들어가있다. 해당 클래스가 아닌 다른 외부 클래스에서는 접근을 거부한다.
하지만 상속 관계라면 얘기는 달라진다.
#include <iostream>
using namespace std;
class A {
private :
int num = 20;
protected :
int num2 = 30;
public :
int num3 = 40;
A() {}
};
class B :public A {
public :
B(){}
void show() {
//cout<<num<<endl;
cout<<num2<<endl;
cout<<num3<<endl;
}
};
int main() {
B ab;
ab.show();
}
위 코드를 보면 상속을 받은 경우에는 접근을 허용하게 하고 있다.
즉 상속 관계에 들어가 있는 경우라면 접근을 허용하여 출력이 가능하다.
상속 명시에서 public 과 protected, private
private : private보다 높은 명시일 경우 즉, protected나 public의 접근 지정방식들을 private바꿔라.
protected : protected보다 높은 명시일 경우 즉, public 의 접근 지정방식을 protected 바꿔라
public : public 보다 높은 명시는 없다.