C++ 面向对象 - 类的继承与派生
一、实训目的
1.了解继承的相关概念
2.掌握保护继承的使用
3.掌握私有继承的使用
4.掌握多继承的使用
二、实训内容
1.公有继承 —— 学生信息类
采用公有继承设计学生信息类。
2.保护继承 —— 学生信息类
3.研究生信息类
采用私有继承完成学生信息类和研究生信息类的设计。
4.狼人类
采用多继承设计一个狼人类
三、实训所实现系统主要功能
1.公有继承 —— 学生信息类
设计 Student 类,并实现 Set 和 PrintSID 函数
2.保护继承 —— 学生信息类**用保护继承设计学生信息类,并实现 Set 和 PrintSID 函数
3.研究生信息类
设计学生信息类( Student )和设计研究生信息类( Graduate ),Graduate 类公有继承 Student 类,而 Student 类私有继承 People 类,并实现他们的成员函数以及一个普通函数
4.狼人类
实现三个类的设计,其中成员变量和成员函数的访问性可自行设置
四、实训系统核心代码及必要说明
1.公有继承 —— 学生信息类
#include "" // People 类定义在这里面
#include <string>
#include <iostream>
using namespace std;
/********** Begin **********/
//公有继承 People
class Student : public People
{
public:
int SID;
void PrintSID();
};
/********** End **********/
void Student::PrintSID()
{
/********* Begin *********/
//输出 SID
cout << "学号:" << SID << "\n";
/********* End *********/
}
void Set(int sid,string name,Student *ptr)
{
/********* Begin *********/
//给 ptr 对象的两个属性赋值
ptr -> Name = name;
ptr -> SID = sid;
/********* End *********/
2.保护继承 —— 学生信息类
#include "" // People 类定义在这里面
#include <string>
#include <iostream>
using namespace std;
/********** Begin **********/
//保护继承 People
class Student : protected People
{
public:
int SID;
void PrintSID();
//添加一个 Set 函数来设置父类的 Name 成员
void setName (string name){
this -> Name = name;
}
};
/********* End *********/
void Student::PrintSID()
{
/********* Begin *********/
//输出学号 SID
cout << "学号:" << SID << "\n";
/********* End *********/
}
void Set(int sid,string name,Student *ptr)
{
/********* Begin *********/
//给 ptr 对象的两个属性赋值
ptr -> setName(name);
ptr -> SID = sid;
/********* End *********/
}
3.研究生信息类
#include "" //People类定义在这里面
#include <string>
#include <iostream>
using namespace std;
/********* Begin *********/
//私有继承 People 类
class Student : private People
{
public:
int SID;
void PrintSID();
//添加一个 Set 函数来设置父类的 Name 成员
void setName (string name){
this -> Name = name;
}
};
/********* End *********/
void Student::PrintSID()
{
/********* Begin *********/
//输出学号 SID
cout << "学号:" << SID << "\n";
/********* End *********/
}
/********* Begin *********/
// 公有继承 Student 类
class Graduate : public Student
{
public:
int ResearchID;
void PrintResearchID();
//添加一个 Set 函数来设置父类的 SID 成员
void setSID (int sid){
this -> SID = sid;
}
//添加一个 Set 函数来调用父类的 SetName 函数
void setNAME (string name){
setName(name);
}
};
/********* End *********/
void Graduate::PrintResearchID()
{
/********* Begin *********/
//输出研究方向 ResearchID
cout << "研究方向:" << ResearchID << "\n";
/********* End *********/
}
void Set(string name,int sid,int rid,Graduate *ptr)
{
/********* Begin *********/
//设置 ptr 所指对象的三个成员
ptr -> setNAME(name);
ptr -> setSID(sid);
ptr -> ResearchID = rid;
/********* End *********/
}
4.狼人类
#include <string>
#include <iostream>
using namespace std;
/********* Begin *********/
class Wolf
{
//狼类成员的声明
public:
string Name;
int Shape;
void PrintState(){
cout << "姓名:" << Name << ",爪子锋利度为:" << Shape << "\n";
}
};
//狼类成员的定义
class Human
{
//人类成员的声明
public:
string Name;
int Intell;
void PrintState(){
cout << "姓名:" << Name << ",智力为:" << Intell << "\n";
}
};
//人类成员的定义
// 记得在这里写上要继承的类
class Werewolf : public Wolf, public Human
{
//狼人类成员的声明
public:
void SetName (string name){
Wolf :: Name = name;
Human :: Name = name;
}
void SetState (int shape, int intell){
Wolf :: Shape = shape;
Human :: Intell = intell;
}
void PrintAllState(){
Wolf :: PrintState();
Human :: PrintState();
}
};
//狼人类成员的定义
/********* End *********/