抽象类(abstract class)和c中的接口#(interface in c#)的区别

抽象类看起来很像接口,但是这个概念对于OOP初学者来说有点混乱。从概念上讲,一个抽象类看起来就像一个接口,当然,没有任何实现,但是它们有各自的区别。虽然抽象类可以部分实现,也可以完全实现,但接口必须完全实现。好吧,两者之间最显著的区别是抽象类可以有默认实现,而接口只是只包含成员声明的方法的定义。让我们详细讨论一下两者的理论方面。...

抽象类看起来很像接口,但是这个概念对于OOP初学者来说有点混乱。从概念上讲,一个抽象类看起来就像一个接口,当然,没有任何实现,但是它们有各自的区别。虽然抽象类可以部分实现,也可以完全实现,但接口必须完全实现。好吧,两者之间最显著的区别是抽象类可以有默认实现,而接口只是只包含成员声明的方法的定义。让我们详细讨论一下两者的理论方面。

什么是抽象类(an abstract class)?

抽象类是一种特殊类型的类,它充当其他类的基,不能实例化。抽象类的实现逻辑由其派生类提供。为了使一个类抽象,使用了“abstract”修饰符,这意味着一些缺少的实现需要在从它派生的类中实现。它同时包含抽象成员和非抽象成员。抽象类旨在提供可由多个派生类进一步共享和重写的基本功能。避免任何类型的代码重复非常有用。它们看起来很像接口,但增加了功能。

抽象类(abstract class)和c中的接口#(interface in c#)的区别

什么是接口(an interface)?

另一方面,接口不是只包含功能签名的类。这是一个没有实现的模式。从概念上讲,它只是包含成员声明的方法定义。它是一个空shell,不包含其成员的实现。它就像一个抽象基类,只包含抽象成员,如方法、事件、索引器、属性等,不能直接实例化,其成员可以由任何类实现。另外,一个类可以实现多个接口,但是一个类只能继承一个类。

抽象类与接口:c语言中抽象类与接口的区别#

  1. 多重继承–一个类只能使用一个抽象类,因此不支持多重继承。另一方面,接口可以支持多重继承,这意味着一个类可以继承任意数量的继承。
  2. C#中抽象类和接口的定义——抽象类是一种特殊类型的类,它可能包含没有实现的定义。实现逻辑由其派生类提供。它可以有抽象方法,也可以有非抽象方法。另一方面,接口只是一种不能做任何事情的模式。从技术上讲,这只是一个空壳。
  3. 实现–抽象类可以同时包含定义和实现。它是一个不完整的类,无法实例化。接口只能有功能的签名而不需要任何代码。
  4. 访问修饰符–一个抽象类可以有多个访问修饰符,如sub、函数、属性等,而接口不允许有访问修饰符,所有方法都必须隐式定义为public。
  5. 同质性–抽象类用于相同类型、行为和状态的实现,而接口用于仅共享方法签名的实现。
  6. 声明–抽象类充当所有其他类的基类,因此它可以声明或使用任何变量,而接口不允许声明任何变量。
  7. 构造函数声明–虽然抽象类可以有构造函数声明,但接口不能有构造函数声明。
  8. 核心与外围—抽象类用于定义类的核心标识,并可用于相同数据类型的对象。另一方面,接口用于定义类的外围功能。
  9. 刚性vs.柔性-抽象类在功能方面更为柔性,至少从开发人员的角度来看是这样,而接口则更为刚性。

抽象类与接口:表形式

抽象类 接口
抽象类可以具有所有访问修饰符,用于函数、子类和属性的成员声明。 接口不允许对函数、子函数、属性等的成员声明使用访问修饰符。所有成员都假定为隐式公共的。
一个类最多只能使用一个抽象类。 一个类可以继承任意数量的接口。
抽象类中不支持多重继承。 接口可以支持多重继承。
从技术上讲,它是一个可能包含或不包含定义及其实现的类。 一个接口只能有功能的签名,所以它基本上是一个空壳。
抽象类可以包含成员。常量、定义的方法和方法存根。 接口只能包含方法和常量。
它定义类的核心标识,并用于描述相同数据类型的对象。 它用来描述一个类的外围能力。
抽象类的成员不能是静态的,除非它是完整的成员。 接口的成员不能是静态的。
它非常适合于同类和常见行为的实现。 如果几个实现只共享方法签名,那么最好使用接口。
它可以有构造函数声明。 它不能有构造函数声明。
抽象类具有预定义的字段和构造函数。 不能在接口中定义字段。
它可以有抽象方法和非抽象方法。 它只能有抽象的方法。

总结

抽象类和接口有什么区别?这可能是任何技术面试中最常见的问题之一。在任何C教程中,您都可能会找到大量关于抽象类和接口的信息,然而,理解两者之间的区别是相当困难的。你可以整合所有你能找到的信息,但仍然无法获得足够的信息。好吧,从概念上来说,这两个术语都是编程中最重要的术语,它们是完全相同的,但是,它们在功能上有很大的不同。抽象类是一种特殊类型的类,它充当其他类的基,而接口则只是一个只有成员声明的空壳。

  • 发表于 2021-06-25 03:34
  • 阅读 ( 355 )
  • 分类:IT

你可能感兴趣的文章

包裹(package)和java接口(interface in java)的区别

Java中的Package和Interface的主要区别在于,Package有助于对类进行有条理的分类以方便访问和维护,而Interface则有助于实现多个继承和实现抽象。 Java是最流行的编程语言之一。Java的主要优点是它支持面向对象编程。这种方法允...

  • 发布于 2020-10-18 11:01
  • 阅读 ( 569 )

班(class)和结构(c)#(structure in c#)的区别

关键区别——c语言中的类与结构# C是微软开发的一种现代的、通用的、高级的编程语言。它是一种类似于Java的编程语言。它包含强大的编程功能,如委托、索引器和语言集成查询。C的主要优点是它支持面向对象编程(OOP)...

  • 发布于 2020-10-19 17:15
  • 阅读 ( 222 )

班(class)和接口(interface)的区别

班(class)和接口(interface)的区别 面向对象编程(OOP)是软件开发中的一种常见范式。它有助于使用类和对象为编程带来真实的场景。类是创建对象的蓝图。程序员可以用属性和方法创建一个类。学生和老师是客体。创建对象称...

  • 发布于 2020-10-24 04:25
  • 阅读 ( 256 )

继承(inheritance)和java接口(interface in java)的区别

继承(inheritance)和java接口(interface in java)的区别 Java是Sun Microsystems公司开发的一种编程语言。Java可以用来开发各种应用程序。它是一种支持面向对象、结构化等多种范式的语言,Java的主要优点是支持面向对象编程(OOP)。程序...

  • 发布于 2020-10-25 00:02
  • 阅读 ( 490 )

抽象类(abstract class)和c中的接口#(interface in c#)的区别

...让我们详细讨论一下两者的理论方面。 什么是抽象类(an abstract class)? 抽象类是一种特殊类型的类,它充当其他类的基,不能实例化。抽象类的实现逻辑由其派生类提供。为了使一个类抽象,使用了“abstract”修饰符,这意味着...

  • 发布于 2021-06-25 03:34
  • 阅读 ( 355 )

抽象类(abstract class)和java接口(interface in java)的区别

...们详细研究一下两者的区别。 什么是java中的抽象类(an abstract class in java)? Java中的抽象类是一个声明为抽象的类——它可能包含也可能不包含抽象方法。它与Java接口非常相似,只是它可以包含默认的方法实现。与面向对象编程...

  • 发布于 2021-06-25 03:52
  • 阅读 ( 299 )

抽象类(abstract class)和java接口(interface in java)的区别

...键术语 抽象类、接口、多重继承 什么是java中的抽象类(abstract class in java)? 用abstract关键字声明的类称为抽象类。抽象类既可以有抽象方法,也可以有非抽象方法。类可以扩展抽象类并实现抽象类的抽象方法。不能从抽象类创...

  • 发布于 2021-07-01 01:29
  • 阅读 ( 276 )

工厂模式(factory pattern)和抽象工厂模式(abstract factory pattern)的区别

...ShapeFactory以获取所需的对象类型。 什么是抽象工厂模式(abstract factory pattern)? 抽象工厂模式使用超级工厂并创建其他工厂。它也被称为工厂的工厂。在这种模式中,接口创建相关对象的工厂,而不显式指定它们的类。换言之,...

  • 发布于 2021-07-01 06:13
  • 阅读 ( 187 )

封装(encapsulation)和c语言中的抽象#(abstraction in c#)的区别

...t方法赋值,public get方法获取值。 什么是c语言中的抽象#(abstraction in c#)? 抽象有助于隐藏实现细节,只允许向用户显示功能。假设一台电视机的遥控器。用户不需要知道控制器的内部电路就可以使用它。抽象与此类似。它关注...

  • 发布于 2021-07-01 14:04
  • 阅读 ( 370 )

抽象类(abstract class)和混凝土等级(concrete class)的区别

... 抽象,抽象类,类,具体类,面向对象 什么是抽象类(abstract class)? OOP中的一个主要概念是抽象。它是一个隐藏内部细节并只向用户显示功能的过程。抽象类是实现抽象的一种方法。Java等编程语言使用抽象关键字来表示抽象类...

  • 发布于 2021-07-01 18:04
  • 阅读 ( 1026 )
ghze1559
ghze1559

0 篇文章

相关推荐