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;}//私有派生,不利于继续派生,实际意义不大。