`
jandroid
  • 浏览: 1954781 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

C#中的抽象类和接口

 
阅读更多

一、抽象类:
抽象类是特殊的类,只是不能被实例化;除此以外,具有类的其他特性;重要的是抽象类可以包括抽象方法,这是普通类所不能的。抽象方法只能声明于抽象类中,且不包含任何实现,派生类必须覆盖它们。

另外,抽象类可以派生自一个抽象类,可以覆盖基类的抽象方法也可以不覆盖,如果不覆盖,则其派生类必须覆盖它们。

C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路抽象类实例
1C抽象类和接口的区别 - readwall - 乡间小路publicabstractclassA
2C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路{
3C抽象类和接口的区别 - readwall - 乡间小路privateint?num=null;
4C抽象类和接口的区别 - readwall - 乡间小路
5C抽象类和接口的区别 - readwall - 乡间小路publicint?Num
6C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路{
7C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路getC抽象类和接口的区别 - readwall - 乡间小路{returnnum;}
8C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路setC抽象类和接口的区别 - readwall - 乡间小路{num=value;}
9C抽象类和接口的区别 - readwall - 乡间小路}

10C抽象类和接口的区别 - readwall - 乡间小路
11C抽象类和接口的区别 - readwall - 乡间小路publicvirtualint?getNum()
12C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路{
13C抽象类和接口的区别 - readwall - 乡间小路returnnum;
14C抽象类和接口的区别 - readwall - 乡间小路}

15C抽象类和接口的区别 - readwall - 乡间小路
16C抽象类和接口的区别 - readwall - 乡间小路publicvoidsetNum(int?n)
17C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路{
18C抽象类和接口的区别 - readwall - 乡间小路this.num=n;
19C抽象类和接口的区别 - readwall - 乡间小路}

20C抽象类和接口的区别 - readwall - 乡间小路
21C抽象类和接口的区别 - readwall - 乡间小路publicabstractvoidF();
22C抽象类和接口的区别 - readwall - 乡间小路}

23C抽象类和接口的区别 - readwall - 乡间小路
24C抽象类和接口的区别 - readwall - 乡间小路publicabstractclassB:A
25C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路{
26C抽象类和接口的区别 - readwall - 乡间小路//publicoverridevoidF()
27C抽象类和接口的区别 - readwall - 乡间小路//{
28C抽象类和接口的区别 - readwall - 乡间小路//thrownewException("Themethodoroperationisnotimplemented.");
29C抽象类和接口的区别 - readwall - 乡间小路//}
30C抽象类和接口的区别 - readwall - 乡间小路
31C抽象类和接口的区别 - readwall - 乡间小路publicabstractvoidE();
32C抽象类和接口的区别 - readwall - 乡间小路}

33C抽象类和接口的区别 - readwall - 乡间小路
34C抽象类和接口的区别 - readwall - 乡间小路publicclassC:B
35C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路{
36C抽象类和接口的区别 - readwall - 乡间小路privateC()
37C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路{
38C抽象类和接口的区别 - readwall - 乡间小路}

39C抽象类和接口的区别 - readwall - 乡间小路
40C抽象类和接口的区别 - readwall - 乡间小路publicoverridevoidE()
41C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路{
42C抽象类和接口的区别 - readwall - 乡间小路thrownewException("Themethodoroperationisnotimplemented.");
43C抽象类和接口的区别 - readwall - 乡间小路}

44C抽象类和接口的区别 - readwall - 乡间小路
45C抽象类和接口的区别 - readwall - 乡间小路publicoverridevoidF()
46C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路{
47C抽象类和接口的区别 - readwall - 乡间小路Cc=newC();
48C抽象类和接口的区别 - readwall - 乡间小路thrownewException("Themethodoroperationisnotimplemented.");
49C抽象类和接口的区别 - readwall - 乡间小路}

50C抽象类和接口的区别 - readwall - 乡间小路}

二、接口:
接口是引用类型的,类似于类,更和抽象类有所相似,以至于很多人对抽象类和接口的区别比较模糊。和抽象类的相似之处有三点:
1、不能实例化;
2、包含未实现的方法声明;
3、派生类必须实现未实现的方法,抽象类是抽象方法,接口则是所有成员(不仅是方法包括其他成员);

另外,接口有如下特性:
接口除了可以包含方法之外,还可以包含属性、索引器、事件,而且这些成员都被定义为公有的。除此之外,不能包含任何其他的成员,例如:常量、域、构造函数、析构函数、静态成员。
一个类可以直接继承多个接口,但只能直接继承一个类(包括抽象类)。

C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路接口实例
1C抽象类和接口的区别 - readwall - 乡间小路publicdelegatevoidDel();
2C抽象类和接口的区别 - readwall - 乡间小路publicinterfaceITest
3C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路{
4C抽象类和接口的区别 - readwall - 乡间小路//int?a=null;
5C抽象类和接口的区别 - readwall - 乡间小路
6C抽象类和接口的区别 - readwall - 乡间小路intA
7C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路{
8C抽象类和接口的区别 - readwall - 乡间小路get;
9C抽象类和接口的区别 - readwall - 乡间小路}

10C抽象类和接口的区别 - readwall - 乡间小路
11C抽象类和接口的区别 - readwall - 乡间小路voidTest();
12C抽象类和接口的区别 - readwall - 乡间小路eventDel?el;
13C抽象类和接口的区别 - readwall - 乡间小路intthis[intindex]
14C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路C抽象类和接口的区别 - readwall - 乡间小路{
15C抽象类和接口的区别 - readwall - 乡间小路get;
16C抽象类和接口的区别 - readwall - 乡间小路set;
17C抽象类和接口的区别 - readwall - 乡间小路}

18C抽象类和接口的区别 - readwall - 乡间小路}

注意!还有另外一种类不能被实例化:
所有构造函数都被标记为private,这种类也是不能被实例化的,严格的说是不能在类外被实例化,可以在此类的内部实例化(这种方式可以用于实现单件设计模式)。注意一点,这样的类也不能够作为基类来继承。

三、抽象类和接口的使用:
抽象类用于部分实现一个类,再由用户按需求对其进行不同的扩展和完善;接口只是定义一个行为的规范或规定。
抽象类在组件的所有实现间提供通用的已实现功能;接口创建在大范围全异对象间使用的功能。
抽象类主要用于关系密切的对象;而接口适合为不相关的类提供通用功能。
抽象类主要用于设计大的功能单元;而接口用于设计小而简练的功能块。

例如:
Window窗体可以用抽象类来设计,可以把公有操作和属性放到一个抽象类里,让窗体和对话框继承自这个抽象类,再根据自己的需求进行扩展和完善。
打印操作可以作为一个接口提供给每个需要此功能的窗体,因为窗体的内容不同,就要根据他们自己的要求去实现自己的打印功能。打印时只通过接口来调用,而不用在乎是那个窗体要打印。

分享到:
评论

相关推荐

    c# 中抽象类和接口的学习

    4. **访问修饰符**:抽象类中的成员可以有任意的访问级别,而接口中的成员默认是公共的。 5. **默认实现**:自C# 8.0起,接口可以包含带有默认实现的方法,这在一定程度上模糊了抽象类和接口之间的界限。 ### 实际...

    C#中抽象类和接口的区别.txt

    在C#编程语言中,抽象类和接口都是用于实现面向对象编程中多态特性的关键概念。它们都旨在为其他类提供一种定义行为和特性的模板或规范,但它们之间存在着重要的区别。本文将详细探讨C#中的抽象类与接口之间的差异,...

    C#中抽象类和接口的区别(经典).docx

    6. **实现方式**:抽象类可以为接口中的成员提供部分或全部实现,而接口中的所有成员都需要在实现类中提供完整实现。 7. **设计原则**:抽象类有助于实现开闭原则,即将类对扩展开放,对修改关闭;而接口强调单一...

    C#类、接口、虚方法和抽象方法-抽象类和接口的相同点和区别

    在C#编程语言中,类、接口、虚方法和抽象方法是面向对象设计的重要组成部分。这里我们将详细讨论这些概念以及抽象类与接口之间的相同点和区别。 首先,让我们来看看抽象类(Abstract Class): 1. 抽象方法是只有...

    C#接口抽象类区别实例

    c#中抽象类和接口。 相同点: (1) 都可以被继承 (2) 都不能被实例化 (3) 都可以包含方法声明 ...(9) 如果抽象类实现接口,则可以把接口中方法映射到抽象类中作为抽象方法而不必实现,而在抽象类的子类中实现接口中方法

    c#中抽象类和接口的详细介绍

    C#中的抽象类和接口 在C#中,抽象类和接口是两种不同的编程概念,它们都可以用来定义一个类的行为和结构,但它们之间有着明显的区别。 一、抽象类 抽象类是特殊的类,它不能被实例化,但它可以包含抽象方法和普通...

    C#抽象类与接口方法

    【C#抽象类与接口方法】在C#编程语言中,抽象类和接口是两种用于实现多态性和封装的关键概念,它们允许我们设计灵活、可扩展的代码结构。 抽象类是一种特殊的类,它不能被实例化,而是作为其他类的基类使用。抽象类...

    C# 中接口与抽象的区别

    C# 中的接口和抽象类是两个重要的概念,但是它们之间的区别却经常被人们混淆。下面我们将详细讲解接口和抽象类的区别,并探讨它们在编程中的应用。 抽象类是特殊的类,只能被继承不能被实例化。抽象类可以包含抽象...

    C#类、接口、虚方法和抽象方法-接口与抽象类的区别实例

    C#类、接口、虚方法和抽象方法-接口与抽象类的区别实例 C#类、接口、虚方法和抽象方法-接口与抽象类的区别实例

    抽象类和接口的区别

    接口中的方法默认都是公共的和抽象的,不允许有任何具体的实现。一个类可以通过实现接口来承诺提供一组特定的行为。 #### 二、区别 1. **继承限制**: - 抽象类:一个类只能继承一个抽象类。 - 接口:一个类可以...

    C#抽象类与抽象方法

    总结来说,C#中的抽象类和抽象方法是实现多态性和接口规范的重要工具。它们允许我们在定义基类时定义部分行为,而将具体实现留给派生类,这样可以提高代码的灵活性和可扩展性。在设计类结构时,合理使用抽象类和抽象...

    C#抽象类实现接口.zip

    压缩包中的" C#抽象类实现接口 "可能包含了各种示例,演示了如何在不同场景下灵活运用抽象类和接口,帮助开发者理解两者之间的交互和选择合适的设计模式。通过分析这些代码,我们可以更深入地学习C#的面向对象编程...

    C#抽象类和接口的区别.docx

    在C#编程语言中,抽象类和接口是两种重要的面向对象设计工具,它们都有各自的特性和用途。让我们详细探讨一下它们的区别。 首先,抽象类是一个特殊的类,它不能被实例化,但可以包含抽象方法和非抽象方法。抽象方法...

    C#中的接口和抽象类

    4. 实现细节:接口中的方法必须在实现类中提供完整实现,而抽象类可以提供部分实现。 在实际开发中,我们应根据需求选择使用接口还是抽象类。如果需要定义一组公共行为,且不涉及共享状态,应优先考虑接口。如果有...

    C#语言中的抽象类与接口的区别,应用

    3. **成员特性**:抽象类可以有抽象和非抽象方法,而接口中所有成员都是公共的、无实现的。 4. **实现方式**:抽象类中的抽象方法默认是虚拟的,而接口中的方法在实现类中默认是非虚拟的。 5. **使用场景**:如果...

    C#接口与抽象类的详解

    在编程语言中,C#提供了两种机制来实现多态性和代码重用,即抽象类和接口。虽然两者在某些方面有相似之处,但它们在设计理念和使用场景上有显著的差异。 首先,我们来深入理解抽象类。抽象类是一种特殊的类,它不能...

    抽象类和接口.rar

    与抽象类不同,接口中的所有方法默认都是抽象的,没有实现。一个类可以实现多个接口,从而具备多种行为,这是多继承的一种形式。接口强调的是“是什么”的概念,即一个类通过实现接口表明它具有某种特定的能力或职责...

    C#抽象类详解文档.doc

    C#中的抽象类是面向对象编程的一个重要概念,它是一种特殊类型的类,设计用来作为其他类的基类。抽象类的主要特点是它不能被实例化,即不能直接创建抽象类的对象。这种特性使得抽象类成为定义接口和实现部分共享行为...

    抽象类和接口共2页.pdf.zip

    在编程领域,抽象类和接口是面向对象编程中的两个核心概念,它们用于实现代码的抽象和模块化。这里我们将深入探讨这两个概念以及它们在实际开发中的应用。 首先,抽象类是一种特殊的类,它不能被实例化,但可以作为...

Global site tag (gtag.js) - Google Analytics