首页 > 其他分享 >继承/多继承/菱形继承/虚继承/多态

继承/多继承/菱形继承/虚继承/多态

时间:2024-06-11 20:28:42浏览次数:21  
标签:讲解员 继承 多态 表演 interperter perform 菱形 Animal 动物

以下是一个简单的比喻,将多态概念与生活中的实际情况相联系:

比喻:动物园的讲解员和动物表演

想象一下你去了一家动物园,看到了许多不同种类的动物,如狮子、大象、猴子等。现在,动物园里有一位讲解员,他会为每种动物表演做简单的介绍。

在这个场景中,我们可以将动物比作是不同的类,而每种动物表演则是类中的函数。而讲解员则是一个基类,他可以根据每种动物的特点和表演,进行相应的介绍。

具体过程如下:

定义一个基类 Animal,其中有一个虛函数perform(),用于在子类中实现不同的表演行为。

#include <iostream>

using namespace std;
class Animal{
private:
    string interperter;
public:
    Animal(string interperter):interperter(interperter){

    }
    virtual void perform(){
        cout << "我是本次讲解员" << interperter << "接下来我为大家讲解." <<endl;
    }
};
class Ikun:public Animal{
private:
    string Animal_name;
public:
    Ikun(string Animal_name,string interperter):Animal(interperter),Animal_name(Animal_name){
    }
        void perform(){
            Animal::perform();
            cout << "全民制作人好,它是" << Animal_name << "它会唱跳rap,music" << endl;
    }
};
class Lbw:public Animal{
private:
    string Animal_name;
public:
    Lbw(string Animal_name,string interperter):Animal(interperter),Animal_name(Animal_name){
    }
        void perform(){
            Animal::perform();
            cout << "这是" << Animal_name << "他的绝活是得得得得得得,十七张牌名闻天下" << endl;
    }
};
class Lb:public Animal{
private:
    string Animal_name;
public:
    Lb(string Animal_name,string interperter):Animal(interperter),Animal_name(Animal_name){
    }
        void perform(){
            Animal::perform();
            cout << "这是" << Animal_name << "老八秘制小汉堡" << endl;
    }
};
int main()
{
    //定义一个KUNKUN
    Ikun I("蔡徐坤","Tom");
    Animal *p=&I;
    p->perform();
    //定义一个老八
    Lb L("老八","Jek");
    p=&L;
    p->perform();
    //定义一个卢本伟
    Lbw l("卢本伟","蔡徐坤");
    p=&l;
    l.perform();


    return 0;
}

标签:讲解员,继承,多态,表演,interperter,perform,菱形,Animal,动物
From: https://blog.csdn.net/DJQ2020391635/article/details/139608021

相关文章

  • 【Go语言】面向对象编程(二):通过组合实现类的继承和方法重写
    通过组合实现类的继承和方法重写要实现面向对象的编程,就必须实现面向对象编程的三大特性:封装、继承和多态。1封装类的定义及其内部数据的定义可以看作是类的属性,基于类定义的函数方法则是类的成员方法。2继承Go语言中,没有直接提供继承相关的语法实现,可以通过组合......
  • C++中的继承
    目录继承的概念及定义继承的概念继承定义定义格式 继承关系和访问限定符继承基类成员访问方式的变化基类和派生类对象赋值转换继承中的作用域派生类的默认成员函数继承与友元继承与静态成员        我们都知道,面向对象的三个基本特征是:封装,继承以及多态......
  • 多态的类型有哪些?
    1.多态的类型多态性有四种类型:重载多态、强制多态、参数多态和包含多态。前两种可以统称为专用多态。之前讲过普通函数的重载和类的成员函数的重载,它们都属于重载多态。上面说的整型变量和浮点型变量相加时,需要先把整型变量强制转换为浮点型再进行加法运算,这就是强制多态......
  • C++多态详解:静态多态与动态多态的实现
    C++中的多态是面向对象编程的重要特性,允许相同的接口调用不同的实现。多态性可以分为两类:静态多态和动态多态。1.静态多态(编译时多态)(1)函数重载(FunctionOverloading):函数重载是一种静态多态,允许同一个函数名在同一作用域内具有不同的参数列表。这些不同的版本在编译时......
  • 深入剖析C++多态的实现与原理-详解
    目录多态基础虚函数虚函数的继承虚类/虚基类重写/覆盖条件:概念:多态的条件其他的多态行为多态中子类可以不写virtual协变代码举例继承遗留问题解决析构函数具体解决方式:题目1答案:解析:题目2答案:C++11override和finalfinal功能1:禁用继承使用场景:功能2:禁用重写使用场景overr......
  • 关于类、继承、接口的复习(1)
    均使用这个层次结构:多态:一个对象变量可以指示多种实际类型动态绑定:一个对象变量在运行时能够自动选择适合的方法注:对象变量是一种“引用”,引用不同块对象的内存,“指示多种实际类型”就是一个对象变量可以在不同情况下引用了多种有继承关系的类型,规则是——对象变量在继承层次......
  • Java入门基础11:面向对象高级一(static、extends继承)
    Java面向对象高级特性有以下几个:继承,多态,封装,抽象,接口,匿名内部类,静态成员,final关键字,异常处理等。我会将它分为三章详细讲,本章主要讲静态和继承staticstatic叫静态,可以修饰成员变量、成员方法。类变量(静态成员变量):有static修饰,属于类,在计算机里只有一份,会被类的全部对象......
  • C++三大特性之多态
    1.多态1.1多态的概念在面向对象方法中一般是这样表述多态性的:向不同的对象发送同一个消息,不同的对象在接收时会产生不同的行为(即方法)也就是说,每个对象可以用自己的方式去响应共同的消息。所谓消息,就是调用函数,不同的行为就是指不同的实现,即执行不同的函数。通俗来说,就是......
  • 关于继承djangon内置模型AbstractUser用户认证authenticate一直返回None
    为了想要使用django内置的auth_user表字段,但是有些字段没有,想要定制于是我们可以:首先导入:fromdjango.contrib.auth.modelsimportUser,AbstractUserfromdjango.dbimportmodels然后这么写:classUserInfo(AbstractUser):"""用户信息"""nid=m......
  • 继承与多态
    1.继承在现实生活中继承有继承财产,而在java代码中的继承就是继承代码。现在看一个例子package继承;publicclassDog{publicStringname;publicintage;publicvoideat(){System.out.println(this.name+"正在吃饭");}}package继......