zoukankan      html  css  js  c++  java
  • .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

  • 相关阅读:
    time 模块学习
    day 14 自定义模块,常用模块 time .datetime ,time 模块
    day 13 课后作业
    day 12 课后作业
    day 11课后作业
    树状数组最值
    hdu 1059 Dividing bitset 多重背包
    XVII Open Cup named after E.V. Pankratiev. XXI Ural Championship
    最长公共子序列板/滚动 N^2
    Uva 10635
  • 原文地址:https://www.cnblogs.com/yuyi211/p/10519097.html
Copyright © 2011-2022 走看看