=============继承==============
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;
}
//私有派生,不利于继续派生,实际意义不大。
C++学习 继承
最新推荐文章于 2024-11-01 00:00:00 发布