C++学习 继承

来源:互联网 发布:扫码出答案的软件 编辑:程序博客网 时间:2024/05/17 21:43
=============继承==============C++中有两种继承,单一继承(拥有一个基类)和多重继承(拥有多个基类)【单一继承】子类可以访问父类的公有方法,但是不能访问父类的私有成员私有成员只能被公有方法来访问,这就是封装的思想如果子类想要访问父类成员,则需要把父类成员声明成 protected#include<iostream>using namespace std;class father{//private:protected:  //其他类不能访问此类的成员函数,派生类可以直接访问!    int height;    int weight;public:    void set1(int h){height = h;}    void set2(int w){weight = w;}    void show(){cout<<"身高:"<<height<<"\t"<<"体重:"<<weight<<endl;}};class son: public father //继承已有的类  【<---继承的写法】{    //子类具有父亲的特性,还可以有自己的特征private:    int age;     int len;public:    void set3(int a){age = a;}    void set4(int l){len = l;}    void show1(){cout<<"年纪:"<<age<<"\t"<<"其它:"<<len<<endl;}};int main(void){    son s;    s.set1(168);    s.set2(50);    s.set3(26);    s.set4(99);    s.show();    s.show1();    return 0;}【公有派生的访问权限】#include<iostream>using namespace std;class Father{private: //即便是在公有派生的前提下,子类也不能调用父类私有成员    void secret(){cout<<"Father's secret I can not use."<<endl;}public:    void money(){cout<<"Father's money I can use."<<endl;}protected:    void room(){cout<<"Father's room I can use."<<endl;}};class Son:public Father //公有派生的公有成员,在派生类中也是公有成员{    //所以在子类中可以直接使用父类的公有成员public:   //因为父类的保护成员子类可以访问,但是子类对象不能访问    void enjoy(){room();} //如果要用,必须在子类中设置公有接口函数};int main(void){    Son s;    s.money();    //s.room(); //父类的保护成员,子类对象不能直接访问    s.enjoy(); //使用子类的public接口函数调用父类的保护成员    return 0;}【父类的protected成员,在子类的代码范围内可以访问,但是子类的对象是不能访问的!】【私有派生】#include<iostream>using namespace std;class Father{public:    void room(){cout<<"Father's room."<<endl;}};class Son:private Father  //私有派生,则父类的私有成员变成不可访问{public:    //对于父类的public和protected的成员,子类都必须定义公有接口,才能被子类对象访问    void enjoy(){room();}};int main(void){    Son s;    s.enjoy();     return 0;}//私有派生,不利于继续派生,实际意义不大。