gpt4 book ai didi

c++ - 什么是 C++ 中的接口(interface)与方法、抽象与封装

转载 作者:太空宇宙 更新时间:2023-11-04 14:51:36 24 4
gpt4 key购买 nike

我和 friend 讨论的时候对这样的概念很困惑。

我 friend 的意见是

1) 抽象是关于纯虚函数的。

2)接口(interface)不是成员函数,接口(interface)是纯虚函数。

我发现在C++ primer中,接口(interface)是数据类型支持的那些操作,所以成员函数是接口(interface)。

我的看法是

1) 抽象是关于接口(interface)和实现的分离;

2) 成员函数是接口(interface)。

那么有人可以为我澄清这些概念吗?

1)抽象、抽象数据类型和抽象类的区别。

2) 接口(interface)和成员函数的区别。

3) 抽象和封装的区别。

最佳答案

我认为你的主要问题是你和你的 friend 对“界面”这个词使用了两种不同的定义,所以你们在不同方面都是对的。

您使用的“接口(interface)”是日常意义上的“与某物进行交互操作的定义方式”,例如“我的计算机和键盘之间的接口(interface)是 USB”或“真空吸尘器和墙壁之间的接口(interface)”权力是一个导出。”从这个意义上说,是的,方法(甚至是具体的方法)是接口(interface),因为它们定义了一种与对象进行互操作的方法。这并不是说这不适用于软件——它是术语应用程序编程接口(interface) (API) 中使用的“接口(interface)”的含义。

您的 friend 在更具体的面向对象编程术语中使用“接口(interface)”,即“类可以选择以保证支持的一组单独定义的操作”。在这里,“接口(interface)”的定义特征是它没有自己的实现。类应该通过提供接口(interface)定义的方法的实现来支持接口(interface)。由于 C++ 在这个意义上没有明确的接口(interface)概念,等效的构造是一个只有纯虚函数(也称为抽象数据类型)的类。

另一方面,“抽象”是关于很多事情的,你们都是对的。一般意义上的抽象意味着能够专注于更高层次的概念而不是更低层次的细节。封装是一种抽象,因为它的目的是隐藏类方法的实现细节;实现可以在不改变类定义的情况下改变。纯虚函数(OO 术语中的“接口(interface)”)是另一种抽象类型,因为如果使用得当,它们不仅可以隐藏实现,还可以隐藏真正的底层对象类型;只要两种类型实现相同的接口(interface),所使用的类型就可以更改。

关于c++ - 什么是 C++ 中的接口(interface)与方法、抽象与封装,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2120303/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com