在设计应用程序或开始编程生涯时,有必要了解C#中抽象类和接口的区别。抽象类和抽象接口都是用来完成抽象的,人们可以理解抽象方法。尽管它们不能同时使用。
抽象类和接口在某些方面似乎相似,但有一些关键的区别,有助于确定哪个是实现与编程相关的特定目标的最佳选择。
我们不应该打算直接使用抽象类。这个类必须至少有一个抽象方法。并在类的定义中用关键字或修饰语abstract进行标记。另一方面,接口只允许用户定义功能。它无法实现。虽然一个类只能开发一个抽象类,但它也可以利用各种接口。
C语言中抽象类与接口的区别在于,抽象类的“主”功能是解释类的真实同一性,而接口的主要功能是解释类的外部可能性。完全抽象不是由抽象类提供的,而接口可以提供完全抽象。
在一个抽象类中,多重继承是不可能的,而接口可以使多重继承成为可能。
Parameter of Comparison | Abstract Class | Interface in C# |
---|---|---|
功能 | 向抽象类添加新方法将提供提供默认实现的选项,因此所有当前代码都将正常工作 | 向接口添加新方法将允许跟踪接口的所有实现,并为最近的方法定义实现 |
各种继承 | 一个类只能继承一个抽象类 | 一个类可以继承多个接口 |
它们包含什么? | 抽象类包含数据成员和构造函数 | C#中的接口不包含数据成员和构造函数 |
提供 | 抽象类可以提供完整的默认代码和/或应该重写的详细信息 | C#中的接口不能提供任何代码,只能提供签名 |
运动速率 | 一个抽象类的速度很快 | C#中的接口需要更多的时间来获取相应类中的实际方法 |
抽象类是一种只能作为其他类的基类的东西。它们是具有一个或多个抽象方法的类。抽象方法称为已公布的方法,但它不包含任何实现。
要创建类,我们需要使用“abstract”修饰符。这个修饰符表示可能有一些缺少的实现需要在从中获取的类中付诸实施。抽象类可以包含抽象成员和非抽象成员。
这个抽象类至少应该有一个抽象方法,上面已经讨论过了。没有这个方法,我们就不能将这个类声明为“抽象”类。
有时抽象类可能不会被实例化,它们需要子类来为抽象方法提供实现。如果我们正在创建一个抽象类,那么我们正在创建一个基类,该基类可能包含一个或多个已完成的方法,但我们至少会找到一个或多个未完成且声明为抽象的方法。
如果一个抽象类的所有方法都没有完成,那么它就像一个接口。为一组派生类的工作方式提供基类的定义,然后让程序员在派生类中填充实现,这是抽象类的实际用途。
我们也可以说抽象类的目的是提供基类定义。
另一方面,接口不是一个只有功能指示的类。我们可以称之为没有实现的模式。理论上,只有方法的定义才有成员的声明。
我们可以认为它是一个空的shell,不包含其成员的实现。接口就像一个抽象基类,只包含抽象成员,如方法、索引器、事件、属性等。
直接实例化它是不可能的,它的成员可以由任何类实现。而且,各种接口可以由一个类实现,尽管如此,一个类只能获得一个类。换句话说,我们可以说一个接口只有成员声明,而不包含这些成员的实现。
一个类实现接口,它必须提供接口中所述方法的定义。意味着接口带来了派生类需要遵循的标准结构。
C#是一种通用的面向对象编程语言。它来自微软。C的主要目的是利用C++的计算能力,以虚拟基础编程方便,主要基于C++,还包含与java相似的特性。
抽象类是在C#中实现抽象的一种方法,不能直接实例化。抽象类的功能是创建一些功能或创建子类可以继承、实现或重写的公共行为。
它基本上为派生类提供了一个蓝图,并给出了在派生类继承抽象类时由派生类实现什么的指令。
C#中的接口可以像类一样定义为类型定义。但它只提供声明,并由类和结构继承。
它与类一起用于定义契约(关于类向应用程序提供什么的协议)。它只声明方法和不同的属性,一个类将指定方法实际执行的操作。
它不能实例化为对象,只能用作方法和属性声明的集合。它定义了类可以或将要执行的操作。
多态性通常表示为一个接口和多个函数。C的多态性意味着提供多种形式的能力。在封装和继承之后,它是面向对象编程的另一个支柱概念。C#提供了实现不同方法的类的能力,这些方法通常用相同的名称调用。
在C#中有两种类型的多态性:
理解两者之间的区别是一项相当困难的任务。我们可以把所有能找到的信息结合起来,但仍然不够。从理论上讲,它们都是编程中最重要的术语,非常相似,但在功能上却有很大的不同。
抽象类是一种特定类型的类,它将作为其他类的基,而接口只是一个只有成员声明的空壳。
Java中的Package和Interface的主要区别在于,Package有助于对类进行有条理的分类以方便访问和维护,而Interface则有助于实现多个继承和实现抽象。 Java是最流行的编程语言之一。Java的主要优点是它支持面向对象编程。这种方法允...
关键区别——c语言中的类与结构# C是微软开发的一种现代的、通用的、高级的编程语言。它是一种类似于Java的编程语言。它包含强大的编程功能,如委托、索引器和语言集成查询。C的主要优点是它支持面向对象编程(OOP)...
班(class)和接口(interface)的区别 面向对象编程(OOP)是软件开发中的一种常见范式。它有助于使用类和对象为编程带来真实的场景。类是创建对象的蓝图。程序员可以用属性和方法创建一个类。学生和老师是客体。创建对象称...
继承(inheritance)和java接口(interface in java)的区别 Java是Sun Microsystems公司开发的一种编程语言。Java可以用来开发各种应用程序。它是一种支持面向对象、结构化等多种范式的语言,Java的主要优点是支持面向对象编程(OOP)。程序...
...让我们详细讨论一下两者的理论方面。 什么是抽象类(an abstract class)? 抽象类是一种特殊类型的类,它充当其他类的基,不能实例化。抽象类的实现逻辑由其派生类提供。为了使一个类抽象,使用了“abstract”修饰符,这意味着...
...们详细研究一下两者的区别。 什么是java中的抽象类(an abstract class in java)? Java中的抽象类是一个声明为抽象的类——它可能包含也可能不包含抽象方法。它与Java接口非常相似,只是它可以包含默认的方法实现。与面向对象编程...
...键术语 抽象类、接口、多重继承 什么是java中的抽象类(abstract class in java)? 用abstract关键字声明的类称为抽象类。抽象类既可以有抽象方法,也可以有非抽象方法。类可以扩展抽象类并实现抽象类的抽象方法。不能从抽象类创...
...ShapeFactory以获取所需的对象类型。 什么是抽象工厂模式(abstract factory pattern)? 抽象工厂模式使用超级工厂并创建其他工厂。它也被称为工厂的工厂。在这种模式中,接口创建相关对象的工厂,而不显式指定它们的类。换言之,...
...t方法赋值,public get方法获取值。 什么是c语言中的抽象#(abstraction in c#)? 抽象有助于隐藏实现细节,只允许向用户显示功能。假设一台电视机的遥控器。用户不需要知道控制器的内部电路就可以使用它。抽象与此类似。它关注...
... 抽象,抽象类,类,具体类,面向对象 什么是抽象类(abstract class)? OOP中的一个主要概念是抽象。它是一个隐藏内部细节并只向用户显示功能的过程。抽象类是实现抽象的一种方法。Java等编程语言使用抽象关键字来表示抽象类...