C++系列(三)---进阶篇(2)


前言

1.个人能力目前仅对于虚函数的实现方法可以通过通俗的语言讲解,故这里仅介绍虚函数的方法。
2.关于接口,不止虚函数一种方法,具体的大家可以等后续博客,或直接百度查阅不过很多都是官方语言比较难懂,大家最好有个心理准备。


1、接口类是什么

首先明确一点,C++没有接口的概念、但是C++可以实现接口的功能,而且实现的方法目前我个人是查到了比较多的方法,这里我只记录虚函数的方法。

这里以例子进行通俗的讲解,我们在上班的时候有人穿运动鞋,有人穿高跟鞋,也有人穿凉鞋,如果没有设计类做接口的话,这里我们就要不断的去重载方法。但是如果我们设计了一个类,类中添加了穿什么鞋作为一个纯虚函数,那么我们在实现每个人穿不同鞋的时候,就可以直接继承这个接口类,然后在派生类中去写穿什么鞋这个方法。
看到这里,相信应该对于接口类大家应该都知道了,接口类其实就是在基类中去声明纯虚函数。然后派生类实现纯虚函数的具体定义,需要注意不同的派生类实现接口的方法根据应用场景的不同也会有所不同,这也从另一方面体现了多态

2、接口类怎么实现

上面讲到了,接口类就是基类声明纯虚函数,然后派生类通过实现声明的方法,来实现接口。
首先参看下列代码:

class Test
{
public:
	virtual int wear()=0//声明接口的纯虚函数
protectedint i;
}

这里是设计了一个抽象类,主要为下面的类提供了一个可以继承的基类,注意抽象类,不能实例化为对象,只能作为接口使用,如果强制实例化,则编译报错。 但是可以实例化该接口类的子类,只要是所继承到的虚函数均被实现(即均定义了具体的内容),就可以实例化。

class Test2: public Test
{
public:
	int wear()
	{
		return i=1;
	}
}

这里就的派生类Test2就是继承Test接口类之后进行了相关方法的实现。
下面看整体代码:

#include <iostream>
using namespace std;
// 接口类
class Test
{
public:
	virtual int wear()=0//声明接口的纯虚函数
protectedint i;
};
// 派生类1
class Test2: public Test
{
public:
	int wear()
	{
		return i=2;
	}
};
// 派生类2
class Test3: public Test
{
public:
	int wear()
	{
		return i=2;
	}
};
int main(void)
{
	Test2 test2;//派生类test2
	Test3 test3;//派生类test3
	cout<<test2.wear();//输出1
	cout<<test3.wear();//输出2
	return 0;
}

这里没有设计应用场景,但是也展现了具体的接口实现方式,大家可以根据需要应用的场景自行设计相关的接口,然后实现接口调用即可,场景不同,具体的实现方法也有所不同,这或许就是面向对象设计的一大魅力所在。
总结:使用一个抽象基类为所有的外部应用程序提供一个标准化的接口,然后继承抽象基类的派生类继承了所有操作,然后根据具体的应用场景,进行方法的不同实现。

3.文中部分名词说明

底子比较厚实的看到这里就可以关闭了,这里主要是对“声明”、“定义”,“多态”的说明。

声明:声明的本质是告诉编译器的程序单元有这个一个东西存在。
定义:就是去描述存在的这个东西是干什么用的。
多态:举个比较通俗的例子,单细胞生物是所有生物的祖先,单细胞生物的后一辈不断的进化,进化出了人、老虎、大象等等不同的生物,这就体现出了多态。放在编程语言中就是,有一个基类,然后又有两个类(设类A、和类B)继承了这个基类,然后类A去做了事情A,类B去实现了事情B,同一个基类但是派生类的具体实现方法不同,这就是多态。
类、对象:感兴趣的可以去翻看我的C++系列文章,C++系列(二)—基础篇(1)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无情翻译官

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值