Oop 抽象和界面的使用

Oop 抽象和界面的使用,oop,Oop,这是我在许多采访中遇到的一个非常基本但深思熟虑的问题为什么我们真的需要抽象类和接口即使我们可以通过简单的继承来实现抽象类和接口。 (从技术上讲是通过生成函数并重写它)如果不在OOPS中创建抽象类和接口,还能剩下什么呢 感谢抽象类可以包含某些功能的部分实现,这与接口不同,接口不包含任何实现,只包含纯虚拟方法声明。使用接口的基本原因是,如果除了如何与类交互(这将为代码提供更多抽象)之外,您真的不知道任何关于类的信息,那么接口比抽象类更抽象。另一方面,Abstract类只是物理对象的部分表示。此外,C

这是我在许多采访中遇到的一个非常基本但深思熟虑的问题为什么我们真的需要抽象类和接口即使我们可以通过简单的继承来实现抽象类和接口。 (从技术上讲是通过生成函数并重写它)如果不在OOPS中创建抽象类和接口,还能剩下什么呢


感谢

抽象类可以包含某些功能的部分实现,这与接口不同,接口不包含任何实现,只包含纯虚拟方法声明。使用接口的基本原因是,如果除了如何与类交互(这将为代码提供更多抽象)之外,您真的不知道任何关于类的信息,那么接口比抽象类更抽象。另一方面,Abstract类只是物理对象的部分表示。此外,C++接口可以从DLL导出,与抽象或简单类的区别。

抽象类可以包含部分功能的部分实现,与不包含任何实现但仅是纯虚方法声明的接口不同。使用接口的基本原因是,如果除了如何与类交互(这将为代码提供更多抽象)之外,您真的不知道任何关于类的信息,那么接口比抽象类更抽象。另一方面,Abstract类只是物理对象的部分表示。在C++接口中,也可以通过与抽象或简单类的区别来导出DLL。

< P>抽象类允许您为其他代码提供基础。您可以创建一个部分实现的类,然后允许用户创建更符合其需求的具体实例。公共功能保留在抽象类中。 现实世界中的一个类比是汽车租赁店。他们租“汽车”。“汽车”的概念是一个抽象类,在其系统中可以有各种方法来允许出租和退货,还可以有保险集团、每日费率等属性。但是,没有客户会去出租店租“汽车”。他们会租一辆福特福克斯,一辆梅赛德斯,一辆斯柯达法比亚或者其他什么。因此,这些是抽象类的具体实例,很可能用从“car”派生的特定类在面向对象系统中表示出来。

另一方面,接口允许多态性。这是指一个类的对象的行为与另一个类相似。我是一个开车的人。我不是一个“司机”对象(因为我做了很多其他事情),但我很可能被认为拥有一个“司机”界面,允许访问我的驾驶执照详细信息等等
另一方面,接口允许多态性。这是指一个类的对象的行为与另一个类相似。我是一个开车的人。我不是一个“司机”对象(因为我做了很多其他事情),但我很可能被认为拥有一个“司机”界面,允许访问我的驾驶执照详细信息等等

这是面向对象理论和实践中的一个非常基础的课题。为什么我们有抽象类,为什么我们有接口,两者之间的区别是什么,等等。它有两个方面,我称之为“机械的”和“本质的”方面。在解释这些概念时,通常会强调它们的机械方面(如语法差异,可以实例化或不实例化,等等)。虽然这些事情很重要,但更重要的是理解它们的本质差异

我已经在我的网站上的一篇文章中解释了我对这个问题的看法


注意:这个网站是新的,还在建设中,所以现在还没有很多帖子,但很快我会发布一些关于面向对象基本方面的文章。

这是面向对象理论和实践中的一个非常基础的主题。为什么我们有抽象类,为什么我们有接口,两者之间的区别是什么,等等。它有两个方面,我称之为“机械的”和“本质的”方面。在解释这些概念时,通常会强调它们的机械方面(如语法差异,可以实例化或不实例化,等等)。虽然这些事情很重要,但更重要的是理解它们的本质差异

我已经在我的网站上的一篇文章中解释了我对这个问题的看法


注:该网站是新的,仍在建设中,因此还没有很多帖子,但是很快我会发布一些关于面向对象的基本方面的文章。

可能重复@Sarfraz:我想要它可以被使用的实时场景。@Sarfraz:我想要它可以被使用的实时场景。:我可以得到更多的例子或任何阅读这些概念的url吗。我曾经教过OOP,所以我自己编了一个spiel。一个更好的界面示例可能是汽车上的门锁。您不会从“可锁定对象”类继承汽车,但您可以