c++ 继承
一.继承介绍:
c++ 是面向对象语言,核心就是在与对类的设计,通过继承机制,可以利用已有的类来定义新的类。所定义的新的类不仅拥有新定义的成员,而且还同时拥有旧的成员。用来派生新类的类为基类,又称为父类。由已存在的类派生出的新类称为派生类,又称为子类。基类负责定义所有类共同拥有的成员,而每个派生类定义各自特有的成员。派生类必须通过使用类派生列表明确指出它是从哪个类继承而来,并说明它是公有继承,保护继承还是私有继承。
公有继承
如果采用公用继承,基类中的访问属性在派生类中保持不变,即:
基类中的私有属性——派生类中私有属性
基类中的共用属性——派生类中共用属性
基类中的受保护属性——派生类中受保护属性
私有继承
如果采用私有继承,基类中的访问属性在派生类中发生如下变化,即:
基类中的私有属性——派生类中不可访问
基类中的共用属性——派生类中私有属性
基类中的受保护属性——派生类中私有属性
保护继承
受保护的成员不能被类外访问,这一点类似私有成员,可以认为保护成员对类的用户来说是私有的。但是有一点与私有成员不同:受保护成员可以被派生类的成员函数引用。
如果采用保护继承,基类中的访问属性在派生类中发生如下变化,即:
基类中的私有属性——派生类中不可访问
基类中的共用属性——派生类中受保护属性
基类中的受保护属性——派生类中受保护属性
实验:
#include <bits/stdc++.h>
using namespace std;
class Person
{
public:
void setg(string nm,int ag)
{
Name=nm;
age=ag;
}
string getname()
{
return Name;
}
int getage()
{
return age;
}
void show()
{
cout<<Name<<' '<<age<<endl;
}
private:
string Name;
int age;
};
class student:public Person//公有继承
{
public:
void set(int x,int y,int a,string nm)
{
setg(nm,a);
Class=x;
degree=y;
}
void sshow()
{
cout<<Class<<' '<<degree<<endl;
}
int getdegree()
{
return degree;
}
int getClass()
{
return Class;
}
private:
int Class,degree;
};
int main()
{
student a;
a.set(3,2,12,"ags");
a.show();
return 0;
}