写一个综合了封装,继承,多态的示例代码,要求:代码要能够体现的封装,继承,多态特点,代码要创新,内容要详细,输出的文字要求是中文
时间: 2024-06-10 07:05:59 浏览: 101
非常感谢您的提问,我将为您解答。
下面给出一个包含封装、继承、多态的示例代码:
```
// 封装示例代码
class Person{
private:
string name;
int age;
public:
Person(string _name, int _age): name(_name), age(_age){}
void show(){
cout<< "姓名: " << name << " 年龄: " << age <<endl;
}
};
// 继承示例代码
class Student: public Person{
private:
int id;
public:
Student(string _name, int _age, int _id): Person(_name, _age), id(_id){}
void show(){
cout<< "学生信息: ";
Person::show();
cout<< "学号: " << id <<endl;
}
};
// 多态示例代码
void showInfo(Person& p){
p.show();
}
int main(){
// 封装示例
Person someone("小明", 18);
someone.show();
// 继承示例
Student stu("小红", 20, 1001);
stu.show();
// 多态示例
showInfo(someone);
showInfo(stu);
return 0;
}
```
这段代码模拟了一个人与学生的关系,使用了封装、继承、多态特性。
首先,在 `Person` 类中封装了两个私有成员变量 `name` 和 `age`,提供了一个构造函数来初始化这两个成员变量。同时,通过 `show` 函数对外提供了一个显示人员信息的接口。
接着,在 `Student` 类中继承了 `Person` 类,并添加了一个 `id` 成员变量。同时,为了展示继承的效果,重写了 `show` 函数,并在该函数中调用了 `Person` 类的 `show` 函数。
最后,在 `main` 函数中,展示了多态的作用。定义了一个函数 `showInfo`,函数参数为一个 `Person` 的引用。在函数中调用了 `Person` 类的 `show` 函数。同时,还调用了该函数,分别传入了 `Person` 和 `Student` 的实例对象,观察到输出的结果是不同的,这就是多态特性的体现。
希望这个示例代码能够满足您的需求。如果您还有其他问题或者需要什么帮助,请随时告诉我。
阅读全文