基类与派生类
- 下图为交通工具的分类层次结构。
- 可以看出从下到上为事物的抽象化过程,从上到下则为抽象到具体化的过程。
- 位于抽象化顶层的交通工具即可看为基类。
- 继承与派生: 抽象层的顶端为基类,基类可以派生出派生类,派生类继承了基类的特征,
并且同时可以加入自己独有的新特征使自己更为具体. - 派生类的定义格式如下:
class 派生类名:继承方式 基类名
{
派生类新成员
} - 注意:派生类继承了基类中除构造函数和析构函数以外的所有成员。此例先忽略构造和析构函数。
#include <iostream>
#include <string>
using namespace std;
class Person{ //基类:人
private:
string name;
int age;
char sex;
public:
//这里先不涉及到构造函数和析构函数,setPerson为我们自定义的赋值函数
void setPerson(string name1,int age1,char sex1)
{
name=name1;
age=age1;
sex=sex1;
}
void print()
{
cout<<name<<'\t'<<age<<'\t'<<sex<<endl;
}
};
class Student:public Person{ //基类:人---->派生类:学生
private:
string sno; //派生类拥有自己的新特征
float score;
public:
void setStudent(string name1,int age1,char sex1,string sno1,float score1)
{
setPerson(name1,age1,sex1); //派生类继承了基类的成员函数
sno=sno1;
score=score1;
}
void print()
{
Person::print(); //继承了基类的成员函数
cout<<sno<<'\t'<<score<<endl;
}
};
int main()
{
Person personOne;
personOne.setPerson("pink",20,'f');
personOne.print();
Student studentOne;
studentOne.setStudent("gini",22,'f',"160101030",94.5);
studentOne.print();
return 0;
}
运行结果: