#220822
class A //기본 클래스, 부모 클래스
{
private:
void a1() {std::cout << "a1\n";}
void a2() {std::cout << "a2\n";}
public:
void b1() {std::cout << "b1\n";}
void b2() {std::cout << "b2\n";}
void b3() {std::cout << "b3\n";}
void b4() {std::cout << "b4\n";}
};
// <상속> 왼 자식, 오 부모/ 상속을 받더라도 private는 상속이 안됨.
class B: public A{
};
//class B : public A { }; //파생클래스, 자식클래스
int main()
{
B bb;
bb.b1();
bb.b4();
return 0;
}
// Dog: 파생 클래스명, public: 상속접근제어, Animal: 기본클래스명
class Dog: public Animal {
]};
// 왼 자식, 우 부모
class Dog: public Animal{
private:
char x;
protected:
// char b; 보이진 않지만 상속되어 있음
char y;
public:
char z;
// double c; 보이진 않지만 상속되어 있음
};
//부모 클래스
class Animal{
private:
int a; //상속 불가
protected:
char b; //protectd으로
public:
double c; //public으로
}
//자식 클래스
class Dog{
private:
char x;
protected:
char y;
public:
char z;
}
//상속 접근제어로 상속1
class A //기본 클래스
{
int x; // 안적혀있다면 private 속성, 상속 안댐
public:
void setX(int i){x=i;}
void showX(){std::cout << x << std::endl;}
};
// A로부터 상속받은 B
class B:public A //파생 클래스
{
int y;
public:
void setY(int i){y=i;}
void showY(){std::cout << y << std::endl;}
};
int main()
{
B bb;
bb.setX(1);
bb.setY(2);
// x,y는 private 멤버라 바로 접근은 안됨
// bb.x=1; 은 접근 x bb.y=2; 은 접근 x
bb.showX(); // 기본클래스의 멤버접근
bb.showY(); // 파생클래스의 멤버접근
return 0;
}