• .NET 抽象类与接口的简述


    1.简单了解什么是接口

    接口是由几个没有主体代码的方法定义组成的集合体,有唯一的名称,可以被类或其他接口所实现(或者也可以说继承)。接口在定义时,通常会在命名前添加I以区别于其他类(例如:IWorker接口);它定义了所有类要继承接口是所以要遵守的一些规范。接口只包含了成员的声明。成员的定义是派生类的责任。接下来实现一个简单的接口:

     1 class Program
     2     {
     3         static void Main(string[] args)
     4         {
     5             IWorker tom1 = new Tom1();
     6             IWorker tom2 = new Tom2();
     7             tom1.work("美工");
     8             tom2.work("页面");
     9 
    10         }
    11     }
    12     public interface IWorker { void work(string s); }
    13     class Tom1 : IWorker
    14     {
    15         public void work(string w)
    16         {
    17             Console.WriteLine("我的名字是Tom1,我的工作是" + w);
    18         }
    19     }
    20     class Tom2 : IWorker
    21     {
    22         public void work(string w)
    23         {
    24             Console.WriteLine("我的名字是Tom2,我的工作是" + w);
    25         }
    26     }

    以上定义了一个简单的工作接口(IWorker),通过两个不同的工人类去继承接口并实现接口的方法;从中必须注意子类在继承接口时,必须实现接口中所有的方法。

    2.简单了解什么是抽象类

    不能初始化的类被叫做抽象类,它们只提供部分实现,但是另一个类可以继承它并且能创建它们的实例,有未被实现的方法。抽象类不能使用new关键字去实例化。抽象类通过abstract关键字进行标识。抽象类同样只能通过接口和作为其它类的基类使用。接下来写一个简单的抽象类:

       abstract class Worker  //定义一个抽象的工作类,并定义一个抽象方法work和一个普通方法
        {
            public void Full()
            {
                Console.Write("请选择一种工作");
            }
            public abstract void work();
        }
        class Tom : Worker //定义一个Topy类实现抽象类中的抽象方法
        {
            public override void work()
            {
                Console.WriteLine("编程");
            }
        }

    从以上可以看到,抽象类在被其派生类继承时,必须继承其抽象方法并实现,而抽象类中的普通方法可以不继承。

    3.接口与抽象类的区别

    1.接口用于规范,抽象类用于共性。抽象类是类,所以只能被单继承,但是接口却可以一次实现多个。

    2.接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量。

    3.抽象类可以提供某些方法的部分实现,接口不可以。抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。

    4.在抽象类中加入一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要重新编写(这就是为什么说接口是一个类的规范了)。

    5.接口成员被定义为公共的,但抽象类的成员也可以是私有的、受保护的、内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序的代码或派生类中访问)。

    6.此外接口不能包含字段、构造函数、析构函数、静态成员或常量。

    7.我们在VS中实现接口时会发现有2个选项,一个是实现接口,一个是显示实现接口。实现接口就是我们平常理解的实现接口,而显示实现接口的话,实现的方法是属于接口的,而不是属于实现类的。

    参考文献

    接口与抽象类区别参考之Lost丶先生

      参考地址:http://www.runoob.com/csharp/csharp-interface.html

  • 相关阅读:
    IoC容器设计
    乐观锁(Optimistic Lock)
    file,path,uri互相转换
    QGraphicsView的paintEvent双缓存绘画
    简单的串口通信程序控制光源
    Qt--QMdiArea和QMdiSubWindow的基本用法
    Qt--支持鼠标拖动来移动内容的QScrollArea视窗
    快速排序算法记录
    结构体在内存中的对齐规则
    求N个数的数组中第K大的数的值
  • 原文地址:https://www.cnblogs.com/yuyi211/p/10519097.html
Copyright © 2020-2023  润新知