首页 > 其他分享 >多继承

多继承

时间:2024-08-16 13:53:36浏览次数:6  
标签:Singer SingingWaiter show 继承 Worker Waiter public

public Worker{}//基类
public Singer:public Worker{}//继承Worker
public Waiter:public Wokrer{}//继承Worker
public SingingWaiter:public Singer,public Waiter{}//多继承
SingingWaiter ed;
Worker *pw=&ed;//二义性
Worker * pw1=(Waiter *)&ed;
Worker *pw2=(Singer *)&ed;//强制类型转换
2.使用虚基类
Class Singer:virtual public Worker{}
Class Waiter::virtual public Worker{}
Class SingingWaiter:public Singer,Worker{}
这样就只会产生一份Worker对象的数据成员。
3.虚基类的构造函数需要显式在子类中调用
直接或间接继承虚基类的所有派生类都必须在构造函数的成员初始化列表中显式调用虚基类的构造函数
SingingWaiter(const Worker &wk,int p=0;int v=Singer::other):Worker(wk),Waiter(wk,p),Singer(wk,v){}
//调用了Worker,Waiter,Singer的构造函数
4.方法调用
SingingWaiter newhire;
newhire.show();
//Singer和Waiter都拥有show方法,SiningWaiter不知道调用哪个show方法。
newhire.Singer::show();//显式调用Singer的show方法
更好的方法是自己定义SiningrWaiter的show方法。
void SingingWaiter::show(){
Singer::Show();
Waiter::Show();
}

标签:Singer,SingingWaiter,show,继承,Worker,Waiter,public
From: https://www.cnblogs.com/zhongta/p/18362706

相关文章

  • Java--继承
    目录概念优缺点object类null概念由于封装,使得有共同特征的一类事物的所有描述信息都被归于一类之中,但我们知道,这并不是万能的,有些事物有共性,但还存在区别,比如码农,简单封装起来如下:优缺点优点:1、提高代码的维护性(只需要改动父类)。2、提高代码的复用性(共性的成员抽取到父类中......
  • java继承与多态
    继承与多态一、概念继承继承是面向对象编程中的一个基本概念,它允许我们定义一个类(称为子类或派生类)来继承另一个类(称为父类或基类)的属性和方法。通过继承,子类可以复用父类的代码,同时也可以添加自己的特定属性和方法。在Java中,继承是通过extends关键字来实现的。一个类只......
  • 08、继承
    01、继承的概述    一、引言        假如我们能够把这些类中的相同的内容给提取出来定义在某一个类中然后,让其他的类和这个定义的类产生一个关系,有了这个关系他们就具备了这个定义类中的功能。该有多好呢?针对这种情况,java就提供了一种技术:继承。   ......
  • windows核心编程 第三章,跨越进程边界共享内核对象,对象句柄的继承性,改变句柄的标志,命名
    windows核心编程3.3跨越进程边界共享内核对象3.3.1对象句柄的继承性3.3.2改变句柄的标志3.3.3命名对象3.3.4终端服务器的名字空间3.3.5复制对象句柄文章目录windows核心编程3.3跨越进程边界共享内核对象3.3.1对象句柄的继承性3.3.2改变句柄的标志3.3.3命名......
  • 详解C++的四大特性(封装,继承,多态,抽象)
    C++的四大特性是面向对象编程(OOP)的核心概念,分别是封装、继承、多态和抽象。这些特性共同构成了C++作为面向对象编程语言的基础。1.封装(Encapsulation)概念:封装是将数据和操作数据的方法绑定在一起,限制对数据的直接访问。通过将数据隐藏在类内部,只暴露必要的接口(如public成......
  • 值类型和引用类型、装箱和拆箱、静态类和普通类、方法的重载、继承和多态
    目录值类型和引用类型的区别?值类型(ValueTypes)定义:特点:示例:引用类型(ReferenceTypes)定义:特点:示例:举例说明:总结:装箱和拆箱装箱(Boxing)特点:示例:拆箱(Unboxing)特点:示例:示例代码:装箱和拆箱的影响最佳实践:静态类和普通类的区别?静态类(StaticClass)普通......
  • C#类继承自泛型集合
    继承自泛型字典的例子这段代码定义了一个多层嵌套的字典结构,旨在组织和存储复杂的层级数据usingSystem;usingSystem.Threading.Tasks;classContract:Dictionary<string,Dictionary<string,Dictionary<string,string>>>{privatereadonlystringtype="a......
  • 继承与派生
    classTableTennisPlayer{private:stringfirstname;stringlastname;boolhasTable;publc:TableTennisPlayer(conststring&fn="none",conststring&ln="none",boolht=false);voidname()const;boolhasTable(retu......
  • Kotlin 面向对象编程 (OOP) 基础:类、对象与继承详解
    什么是面向对象编程(OOP)?OOP代表面向对象编程。过程式编程是编写执行数据操作的过程或方法,而面向对象编程则是创建包含数据和方法的对象。与过程式编程相比,面向对象编程具有以下几个优势:OOP更快且更易于执行OOP为程序提供了清晰的结构OOP有助于保持Kotlin代码的DRY......
  • C# & Unity 面向对象补全计划 七大原则 之 合成/聚合复用原则( CARP)难度:☆☆☆☆ 总结:
    本文仅作学习笔记与交流,不作任何商业用途,作者能力有限,如有不足还请斧正本系列作为七大原则和设计模式的进阶知识,看不懂没关系请看专栏:http://t.csdnimg.cn/mIitr,查漏补缺1.合成/聚合复用原则(CARP)        合成/聚合复用原则就是在一个新的对象里面使用一些已有的......