实验五--类的继承派生多态二次练习

实验目的

1. 理解运行时多态

2. 掌握虚函数和抽象类

实验准备

1. 概念

多态,运行时多态

虚函数, 纯虚函数, 抽象类

2. 语法和应用

虚函数的定义和使用纯虚函数、抽象类的定义和使用

实验内容

设计并实现一个机器宠物类MachinePets。

每个机器宠物有如下信息:昵称(nickname)

每个机器宠物有如下成员函数:

带参数的构造函数MachinePets(const string s) ,为机器宠物初始化昵称。

纯虚函数string talk()为机器宠物派生类提供宠物叫声的统一接口。

设计并实现电子宠物猫类PetCats,该类公有继承自MachinePets。每个电子宠物猫类有如下成员函数:

带参数的构造函数PetCats(const string s),为机器宠物猫初始化昵称。

string talk(),返回电子宠物猫叫声。

设计并实现电子宠物狗类PetDogs, 该类公有继承自MachinePets。每个电子宠物狗类有如下成员函数:

带参数的构造函数PetCats(const string s),为机器宠物狗初始化昵称。

string talk(),返回电子宠物狗叫声。

 1 #ifndef PET_H
 2 #define PET_H
 3 #include<string>
 4 using namespace std;
 5     class MachinePets{
 6 public:
 7     MachinePets(const string s="nameless");
 8     virtual string talk()=0;
 9     string getNickname();
10 private:
11     string nickname;
12 };
13     class PetCats:public MachinePets{
14 public:
15     PetCats(const string s);
16     string talk();
17 };
18
19     class PetDogs:public MachinePets{
20 public:
21     PetDogs(const string s);
22     string talk();
23 };
24 #endif // PET_H_INCLUDED

pet.h

#include <iostream>
#include <string>
using namespace std;
#include "pet.h"
#include  <stdlib.h>
    MachinePets::MachinePets(string s/*="nameless"*/):nickname(s){}
    string MachinePets::getNickname(){
        return nickname;
    }
  PetCats::PetCats(const string s):MachinePets(s){
    }
    string PetCats::talk(){
    return "meow~";
    }
    PetDogs::PetDogs(const string s):MachinePets(s){}
    string PetDogs::talk(){
    return "rao~";
}
    void play(MachinePets * pet){
    cout<<pet->getNickname()<<‘ ‘<<"says"<<‘ ‘<<pet->talk()<<endl;
}
int main()
{
  PetCats cat("xiro neko");
PetDogs dog("dogmeat");
play(&cat); // 按照play()形参,传递参数
play(&dog); // 按照play()形参,传递参数
     return 0;
 }

main.cpp

rpg游戏---等写完了再补充上面去(咕咕咕)

总结

注意基类中成员函数有无关键字virtual,访问的成员分别是什么。

原文地址:https://www.cnblogs.com/laboratory-X/p/10976986.html

时间: 2024-11-08 18:05:17

实验五--类的继承派生多态二次练习的相关文章

实验五 类的继承、派生和多态(2)

一.验证性实验 1. 在多层继承中,派生类中出现与基类同名成员时,通过对象名.成员名的方式,访问的成员什么? 对象名.成员名:派生类对象 2. 通过基类指针访问派生类对象时,基类中成员函数有无关键字virtual,访问的成员分别是什么? 基类指针:有关键字时访问派生类,无关键字访问基类对象 二.编程练习 1.设计并实现一个机器宠物类MachinePets #include<iostream> #include<string> using namespace std; class M

实验6 类的继承和多态

四.实验结论 1.实验内容1 Base.h #ifndef Base_h #define Base_h using namespace std; class Base { public: Base (int m0 ,int n0):m(m0),n(n0){} int add (){return m+n;}; int getm() const {return m;}; int getn() const {return n;}; private: int m, n; }; #endif /*Base

实验6:类的继承和多态

南京信息工程大学实验报告 实验名称 类的继承和多态 实验日期 2018-5-29 得分 指导教师 耿学华 系 计软院 专业 计嵌+软嵌 年级 2017 级 班次 (1) 姓名 施昊阳 学号 20161334026 一.实验目的 理解类的继承和派生机制 掌握派生类的定义和使用 掌握派生类成员的标识与访问中同名覆盖原则.二元作用域分辨符和虚基类的用法 掌握派生类构造函数和析构函数的定义及调用次序 理解运算符重载的目的,掌握运算符重载函数的编写方法 二.实验准备 类的继承和派生 请结合第 7 章课件和

【游戏开发】在Lua中实现面向对象特性——模拟类、继承、多态

一.简介 Lua是一门非常强大.非常灵活的脚本语言,自它从发明以来,无数的游戏使用了Lua作为开发语言.但是作为一款脚本语言,Lua也有着自己的不足,那就是它本身并没有提供面向对象的特性,而游戏开发是一项庞大复杂的工程,如果没有面向对象功能势必会为开发带来一定的不便.不过幸好Lua中有table这样强大的数据结构,利用它再结合元表(metatable),我们便可以很方便地在Lua中模拟出类.继承和多态等面向对象编程具有的特性. 二.前提知识 按照惯例,我们还是先来熟悉一下必要的前提知识,以便方便

类的继承和多态细思

类的继承和多态细思 一.前言   类的继承和多态光靠概念和想象是不够的,我们需要编码去分析之,因此我使用代码来说明一些很难分清的东西. 二.分析代码 A类代码: package zyr.study.poly; public class A { public A(){ System.out.println("初始化A..."); } public String show(A obj) { return ("A and A"); } public String show

python之7-2类的继承与多态

类的继承的意思就如同父子关系一样,这个儿子继承了父亲的一切,但是在某些地方(属性)相同的时候,儿子的属性大于老子的属性(覆盖),最底层类,总会继承最接近它的那个类的属性init 类的多态总是和继承相连的,没有继承,就没有多态一说.一个子类的实例,它即属于这个子类,也属于父类,比如:父亲A和儿子B,儿子B即属于儿子类,也属于人类,但是它不属于父亲类 多态是面向对象语言的一个基本特性,多态意味着变量并不知道引用的对象是什么,根据引用对象的不同表现不同的行为方式.在处理多态对象时,只需要关注它的接口即

c++ 类的继承派生

作者:张煜 这周上的c++课上老师讲了类的继承和派生,总觉得他讲的相当的不完整. 类的继承是利用已有的类来建立专用类的编程技术.从另一个角度来说,从已有的类(父类)产生一个新的子类,称为类的派生. 继承是面向程序设计中最重要的机制,它支持层次分类的观点.继承使得程序员可以在一个较一般的类的基础上很快地建立一个新类,而不必从零开始设计每个类,在现实世界中,许多实体或概念不是孤立的,它们具有共同的特征,但也有细微的差别,人们使用层次分类的方法来描述这些实体或概念之间的相似点和不同点.如下图:    

综合运用类、继承、多态,完成一个公司人员管理类层次结构(未完待续)

1.Target /*综合运用类.继承.多态等技术,完成一个公司人员管理类层次结构,用来描述人员信息等, 重载各种运算符,完成数据库内容的赋值.添加.工资增长等.*/ 2.Code #include <iostream> #include <cstring> #include <string> #include <cstdio> #include<cstdlib> #define TECH const string name, const int

python类的继承和多态

python类的继承和多态 现在属于是老年人的脑子,东西写着写着就忘了,东西记着记着就不知道了.之前学C++的时候就把类.对象这块弄得乱七八糟,现在是因为很想玩python,所以就看看python的类和对象. 就像说的,类有三个特征:封装.继承.多态. 1.封装:类封装了一些方法,可通过一定的规则约定方法进行访问权限. C++中的成员变量有public.private.ptotected. 在python中,默认的成员变量都是public的,如果成员变量前面是加两个下划线,表示该成员变量是私有的