继承方式
- 继承方式分为
public
、protected
、private
三种 - 三种继承方式都不能继承到父类的private属性
- public继承:父类的public&&protected属性继承到子类不发生变化,仍然是public&&protected
- protected继承:父类的public&&protected属性继承到子类都变成了protected
- private继承:父类的public&&protected属性继承到子类都变成了private
//继承方式
//继承方式分为public、protected、private三种
//三种继承方式都不能继承到父类的私有属性
//public继承:父类的public&&protected属性继承到子类不发生变化,仍然是public&&protected
//protected继承:父类的public&&protected属性继承到子类都变成了protected
//private继承:父类的public&&protected属性继承到子类都变成了private
class Father
{
public:
int a;
protected:
int b;
private:
int c;
};
//public继承
class Son_public : public Father
{
public:
void function()
{
a = 100; //public
b = 100; //protected
//c = 100; //属性c不可以访问
}
};
//创建子类对象测试类外能否修改父类属性
void test1()
{
Son_public son;
son.a = 100;
//son.b = 100; //不可以修改,因为b属性从父类继承过来是protect,不可以类外直接修改属性值
}
//protected继承
class Son_protected : protected Father
{
public:
void function()
{
a = 100; //protected
b = 100; //protected
//c = 100; //private属性不能够继承
}
};
void test2()
{
Son_protected son;
//son.a = 100; //不可以修改,因为a属性从父类通过protected继承方式继承到子类变成了protected
//son.b = 100; //不可以修改,因为b属性从父类通过protected继承方式继承到子类变成了protected
}
//private继承
class Son_private : private Father
{
public:
void function()
{
a = 100; //变为private属性
b = 100; //变为private属性
//c = 100; //private属性不能被继承
}
};
void test3()
{
Son_private son;
//son.a = 100; //不可修改
//son.b = 100; //不可修改
}
//Son_private_son类继承Son_private类
class Son_private_son : public Son_private
{
public:
void function()
{
//a = 100; //父类中a属性已经变为private属性了,不能被继承
//b = 100; //父类中b属性已经变为private属性了,不能被继承
}
};
继承方式的大致关系如图所示