虚基类 java_C++中相似于java中接口的应该是抽象基类吧,为什么老看见说说虚基类更像接口呢...

在本人看来虚基类只是一种为了避免多次拷贝的语法用法而言,并不是一种数据接口呀?求高手解答

解决方案

5

java不允许多重继承,所以java没有虚继承的概念

只有在虚继承的情况下,才把父类叫虚基类,实际上父类仍然是个普通父类,真正做出实现的是继承类

抽象基类只是不允许实例化,就像你把一个普通类的构造函数声明成protected一样,它是一种能带数据的接口

虚继承是用于解决多重继承的,并不是接口逻辑,你概念混淆得很重

5

接口逻辑指的是回调,回调指的是函数,和数据的逻辑结构没有任何关系,由于面向对象设计用虚函数代替,所以接口才和对象扯上关系

c++普通继承的逻辑是组合,而虚继承的逻辑是装饰,这三代的继承才会体现出来,java的abstract分别派生出两个子类后,这两个子类不能派生出一个孙子类,所以这是不可比的

虚继承不是为了修正普通基础的“缺陷”,这两个是不同的逻辑,而数据的继承和虚函数的复写也是不同的逻辑

10

有人没分清虚基类跟抽象基类的概念吧,你应该在这个问题上较劲。

有些语言里明确提出区分了接口和类的概念,用了不同的关键字。

而C++里并没有完全地分开这两玩意儿,反正都是类,只要有至少一个成员函数是虚的,就会有一个虚函数表,派生类重载后实现多态,从某种层面上说这个虚方法也可以叫接口方法。

像其它语言中接口就是接口,全部方法只有声明没有实现。而C++中的抽象类是指至少有一个纯虚函数方法的类,即可以成员函数全部为纯虚,可以部分为纯虚部分有实现。

关键还是看具体做什么。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值