Compare interfaces and classes in .NET
Interfaces and classes are often used in our daily development. What is the difference between the two? What are the advantages and disadvantages? The following article will introduce to you relevant information about the difference between interfaces and classes in .NET. Friends who need it can refer to it. Let's take a look together.
Preface
Everyone should know that .Net provides an interface, which is different from the type definition of Class or Struct. In some cases, interfaces seem to be the same as abstract classes, so some people think that abstract classes can be completely replaced by interfaces in .Net. In fact, this is not the case. Interfaces and abstract classes each have their own strengths and weaknesses, so they are often used in combination in applications to complement each other. Not much to say below, let’s take a look at the detailed introduction.
Next, let’s talk about the difference between abstract classes and interfaces:
The difference is that the concepts expressed by the two are different. Abstract class is a high degree of aggregation of a class of things, so for subclasses that inherit abstract classes, it is a "yes" relationship for abstract classes; interfaces define behavioral specifications, so for subclasses that implement interfaces , relative to the interface, it is "the behavior needs to be completed according to the interface." This may sound a bit false, but here’s an example. For example, dog is a general term for all canine animals, Pekingese is dog, and Shepherd is dog. Then the general characteristics of dogs will be found in Pekingese and Shepherd. So compared to Pekingese and Shepherd, dog is It belongs to the abstract type of this kind of thing; and for the action of "barking", dogs can bark and birds can also bark. Obviously, the former is equivalent to the abstract class, while the latter refers to the interface.
Difference 2: When an abstract class defines a type method, the implementation part of the method may or may not be given; but for an interface, the implementation part cannot be given for any method defined in it.
For example:
publicabstractclassAbsTest { publicvirtualvoidTest() { Debug.WriteLine("Test"); } publicabstractvoidNewTest(); } publicinterfaceITest { voidTest(); voidNewTest(); }
Difference three, inheritance classes have different implementations of the methods involved in the two. The inherited class does not need to rewrite the abstract methods defined by the abstract class, that is to say, the methods of the abstract class can be extended; for the methods or attributes defined by the interface class, the corresponding methods must be given in the inherited class. The methods and properties are implemented.
Difference 4: In an abstract class, if a new method is added, it does not need to be used for any processing in the inherited class; but for interfaces, the inherited class needs to be modified to provide a newly defined method.
Now that we know the difference between the two, let’s talk about the advantages of interfaces over abstract classes.
Benefits 1: Interfaces can not only act on reference types, but also on value types. As for abstract classes, they can only act on reference types.
Benefit 2: .Net type inheritance can only be single inheritance, which means that a type can only inherit one type, but can inherit multiple interfaces. In fact, I agree with this point. Multiple inheritance will make the inheritance tree confusing.
Benefit 3: Since the interface only defines properties and methods and has little to do with the actual implemented type, the interface can be reused by multiple types. In contrast, the relationship between abstract classes and inherited classes is closer.
Benefit 4: Through interfaces, the attributes and methods exposed by a type can be reduced, thereby making it easier to protect type objects. When a type that implements an interface may contain other methods or attributes, but when the method returns, it can return the interface object. In this way, the calling end can only access the relevant elements of the object through the methods or attributes provided by the interface, which can effectively protect the object. other elements.
Benefit 5: Reduce the unboxing operations of value types. For value type data defined by Struct, when it is stored in a collection, it needs to be unboxed every time it is taken out. In this case, the method of combining Struct+Interface is used to reduce the unboxing operation.
Compared to abstract classes, interfaces have so many benefits, but interfaces have a fatal weakness, that is, the methods and properties defined by the interface can only be relative to the type that inherits it (unless modified in the inherited class) function label defined by the interface), then when it comes to multi-layer inheritance relationships, it is difficult to implement it using interfaces alone. Because if each type inherits the interface and implements it, not to mention that writing code is more cumbersome, and sometimes the execution result is wrong, especially when the subtype object is implicitly converted into a base class object for access.
At this time, it needs to be implemented using interfaces combined with virtual methods. In fact, in inheritance, should we use interfaces or abstract classes? The interface is fixed and conventional, so the implementation of the corresponding methods and properties of the interface must be provided in the inherited class. For abstract classes, the implementation of the definition method of the abstract class runs through the entire inheritance tree, so the implementation or rewriting of the methods is uncertain. Therefore, relatively speaking, abstract classes are more flexible than interfaces.
A simple comparison table between the two is given below.
Interface |
Abstract class |
|
Multiple inheritance |
Supported |
Not supported |
Type restrictions |
No |
Yes, it can only be a reference type |
method implementation |
The method implementation must be given in the inherited type |
It does not need to be given in the inherited class |
Extensibility |
More troublesome |
Relatively flexible |
Multi-layer inheritance |
It’s more troublesome, you need to use virtual functions |
It’s more flexible |
In general, interfaces and abstract classes are language means provided by .Net to better realize the inheritance relationship between types, and the two are somewhat complementary to each other. Therefore, I do not emphasize what to use and what not to use. The key to the problem is how to apply these two methods reasonably to the program. This is crucial.
The above is the detailed content of Compare interfaces and classes in .NET. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics











Nowadays, the performance and functions of mobile phones are becoming more and more powerful. Almost all mobile phones are equipped with convenient NFC functions to facilitate users for mobile payment and identity authentication. However, some Xiaomi 14Pro users may not know how to enable the NFC function. Next, let me introduce it to you in detail. How to enable nfc function on Xiaomi 14Pro? Step 1: Open the settings menu of your phone. Step 2: Find and click the "Connect and Share" or "Wireless & Networks" option. Step 3: In the Connection & Sharing or Wireless & Networks menu, find and click "NFC & Payments". Step 4: Find and click "NFC Switch". Normally, the default is off. Step 5: On the NFC switch page, click the switch button to switch it to on.

Sliding the screen through the air is a feature of Huawei that is highly praised in the Huawei mate60 series. This feature uses the laser sensor on the phone and the 3D depth camera of the front camera to complete a series of functions that do not require The function of touching the screen is, for example, to use TikTok from a distance. But how should Huawei Pocket 2 use TikTok from a distance? How to take screenshots from the air with Huawei Pocket2? 1. Open the settings of Huawei Pocket2 2. Then select [Accessibility]. 3. Click to open [Smart Perception]. 4. Just turn on the [Air Swipe Screen], [Air Screenshot], and [Air Press] switches. 5. When using it, you need to stand 20~40CM away from the screen, open your palm, and wait until the palm icon appears on the screen.

WPS is our commonly used office software. When editing long articles, the fonts are often too small to be seen clearly, so the fonts and the entire document are adjusted. For example: adjusting the line spacing of the document will make the entire document very clear. I suggest that all friends learn this operation step. I will share it with you today. The specific operation steps are as follows, come and take a look! Open the WPS text file you want to adjust, find the paragraph setting toolbar in the [Start] menu, and you will see the small line spacing setting icon (shown as a red circle in the picture). 2. Click the small inverted triangle in the lower right corner of the line spacing setting, and the corresponding line spacing value will appear. You can choose 1 to 3 times the line spacing (as shown by the arrow in the figure). 3. Or right-click the paragraph and it will appear.

According to statistics on March 2, the total TVL of Bitcoin’s second-layer network MerlinChain has reached US$3 billion. Among them, Bitcoin ecological assets accounted for 90.83%, including BTC worth US$1.596 billion and BRC-20 assets worth US$404 million. Last month, MerlinChain’s total TVL reached US$1.97 billion within 14 days of launching staking activities, surpassing Blast, which was launched in November last year and is also the most recent and equally eye-catching. On February 26, the total value of NFTs in the MerlinChain ecosystem exceeded US$420 million, becoming the public chain project with the highest NFT market value besides Ethereum. Project Introduction MerlinChain is an OKX support

The development of artificial intelligence (AI) technologies is in full swing today, and they have shown great potential and influence in various fields. Today Dayao will share with you 4 .NET open source AI model LLM related project frameworks, hoping to provide you with some reference. https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel is an open source software development kit (SDK) designed to integrate large language models (LLM) such as OpenAI, Azure

Differences and comparative analysis between C language and PHP C language and PHP are both common programming languages, but they have obvious differences in many aspects. This article will conduct a comparative analysis of C language and PHP and illustrate the differences between them through specific code examples. 1. Syntax and usage: C language: C language is a process-oriented programming language, mainly used for system-level programming and embedded development. The syntax of C language is relatively simple and low-level, can directly operate memory, and is efficient and flexible. C language emphasizes the programmer's completeness of the program

Introduction to PHP interface and how it is defined. PHP is an open source scripting language widely used in Web development. It is flexible, simple, and powerful. In PHP, an interface is a tool that defines common methods between multiple classes, achieving polymorphism and making code more flexible and reusable. This article will introduce the concept of PHP interfaces and how to define them, and provide specific code examples to demonstrate their usage. 1. PHP interface concept Interface plays an important role in object-oriented programming, defining the class application

Interfaces and abstract classes are used in design patterns for decoupling and extensibility. Interfaces define method signatures, abstract classes provide partial implementation, and subclasses must implement unimplemented methods. In the strategy pattern, the interface is used to define the algorithm, and the abstract class or concrete class provides the implementation, allowing dynamic switching of algorithms. In the observer pattern, interfaces are used to define observer behavior, and abstract or concrete classes are used to subscribe and publish notifications. In the adapter pattern, interfaces are used to adapt existing classes. Abstract classes or concrete classes can implement compatible interfaces, allowing interaction with original code.
