继承

面向对象中的继承指类之间的父子关系;
子类拥有父类的所有成员变量和成员函数;
子类就是一种特殊的父类;
子类对象可以当作父类对象使用;
子类可以拥有父类没有的方法和属性;

class Parent
{
private:
    int a;
public:
    Parent()
    {
        a = 1000;
    }    
    void print()
    {
        cout<<"a = "<<a<<endl;
    }
};
class Child : Parent//child继承parent
{
    

};


C++中的访问级别与继承:
继承时的访问级别设定会影响到成员的访问级别;



注意:

1. C++ class 的继承默认为 private 继承;
2. private 继承的子类拥有父类的所有成员;
3. private 继承使得父类的所有成员在子类中变为 private 成员;



C++ 中的访问级别与继承:
public 继承:
父类成员在子类中保持原有访问级别;
private 继承:
父类成员在子类中变为 private 成员;


class Child : public Parent//c++中的继承一般是指public继承
//为子类添加新成员
{
private:
    int b;
public:
    void set(int a, int b)
    {
        this->a = a;//编译错误,此处不能访问
        this->b = b;
    }
};


类成员访问级别设置的原则:
需要被外界访问的成员直接设置为 public;
只能在当前类中访问的成员设置为 private;
只能在当前类和子类中访问的成员设置为 protected;



#include <cstdlib>
#include <iostream>
using namespace std;
class A
{
private:
    int a;
protected:
    int b;
public:
    int c;   
    A()
    {
        a = 0;
        b = 0;
        c = 0;
    }
    
    void set(int a, int b, int c)
    {
        this->a = a;
        this->b = b;
        this->c = c;
    }
};
class B : public A//public继承
{
public:
    void print()
    {
        cout<<"a = "<<a;//error
        cout<<"b = "<<b;
        cout<<"c = "<<endl;
    }
};
class C : protected A//protected继承
{
public:
    void print()
    {
        cout<<"a = "<<a;//error
        cout<<"b = "<<b;
        cout<<"c = "<<endl;
    }
};
class D : private A//private继承
{
public:
    void print()
    {
        cout<<"a = "<<a;//error
        cout<<"b = "<<b;
        cout<<"c = "<<endl;
    }
};
int main(int argc, char *argv[])
{
    A aa;
    B bb;
    C cc;
    D dd;
    
    aa.c = 100;
    bb.c = 100;
    cc.c = 100;//error
    dd.c = 100;//error
    
    aa.set(1, 2, 3);
    bb.set(10, 20, 30);
    cc.set(40, 50, 60);//error
    dd.set(70, 80, 90);//error
    
    bb.print();
    cc.print();
    dd.print();
    
    cout << "Press the enter key to continue ...";
    cin.get();
    return EXIT_SUCCESS;
}

继承是一种类之间的关系,子类是一种特殊的父类;
子类通过继承可以得到父类的所有成员;
private成员可以被子类继承但不能被子类访问;
protected成员只能在当前类和子类中被访问;
不同的继承方式可能改变继承成员的访问属性;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值