zoukankan      html  css  js  c++  java
  • c#接口

    接口描述的是类或结构所描述的一组相关功能。

    所以继承此接口的类或结构必须实现接口中定义的所有成员。

    接口使用interface关键字进行声明,成员可以为属性,方法,索引,事件。

    接口的特性:

      1)、接口类似与抽象类,不能实例化,实现接口的任何非抽象类都必须实现接口的所有成员:

                 当显示实现成员时,实现成员不能通过类的对象访问,只能通过接口实例访问。

                 当隐示实现成员时,可以通过类和接口的实例访问,但是实现成员须是public。

      2)、接口不能包含字段,常量,构造函数,析构函数和静态成员等。

      3)、接口成员是公开的,且不需要任何的访问修饰符。

      4)、接口,类和结构都可以继承多个接口。

     1 interface IProgram
     2     {
     3         void Fun();
     4     }
     5 
     6     class Program : IProgram
     7     {
     8         //显示接口实现
     9         void IProgram.Fun()
    10         {
    11             Console.WriteLine("i am fun.");
    12         }
    13         static void Main(string[] args)
    14         {
    15             IProgram i = new Program();//声明一个接口,但不是对接口实例化
    16             i.Fun();
    17             Console.ReadKey();
    18         }
    19     }

    隐式接口与显示接口实现的区别:

     一般当类和结构实现单个接口时使用隐式接口。

    而当要实现多个接口时,且接口中含有同名函数时就需要使用显示接口。且使用了显示接口隐式接口就失效了。

     1  interface IProgram
     2     {
     3         void Fun();
     4     }
     5     interface IAPrograme{
     6      void Fun();
     7     }
     8     class Program : IProgram,IAPrograme
     9     {
    10         //显示接口实现
    11         void IProgram.Fun()
    12         {
    13             Console.WriteLine("i am IProgram fun.");
    14         }
    15          void IAPrograme.Fun(){
    16              Console.WriteLine("i am IAPrograme fun.");
    17         } 
    18         //实现隐式接口
    19          //void Fun() { 
    20           
    21          //}
    22         static void Main(string[] args)
    23         {
    24             Program p = new Program();
    25             ((IProgram)p).Fun();
    26             ((IAPrograme)p).Fun();
    27             Console.ReadKey();
    28         }
    29     }

    接口的继承:

    接口的继承指的是继承的父接口的所有成员,但是还是没有实现。且允许多继承。

     1 interface IProgram
     2     {
     3         void Fun();
     4     }
     5     interface IAPrograme : IProgram
     6     {
     7 
     8     }
     9     class Program : IProgram, IAPrograme
    10     {
    11         //显示接口实现
    12         void IProgram.Fun()
    13         {
    14             Console.WriteLine("i am IProgram fun.");
    15         }
    16         //void IAPrograme.Fun()
    17         //{
    18         //    Console.WriteLine("i am IAPrograme fun.");
    19         //}
    20         //实现隐式接口
    21         //void Fun() { 
    22 
    23         //}
    24         static void Main(string[] args)
    25         {
    26             Program p = new Program();
    27             //((IProgram)p).Fun();
    28             ((IAPrograme)p).Fun();
    29 
    30             Console.ReadKey();
    31         }
    32     }

    接口的覆盖:

     1  interface IProgram
     2     {
     3         void Fun();
     4     }
     5     abstract class IAProgram : IProgram
     6     {
     7         abstract public void AFun();
     8         void IProgram.Fun()
     9         {
    10             AFun();
    11         }
    12     }
    13     class Program : IAProgram
    14     {
    15      
    16         public override void AFun()
    17         {
    18             Console.WriteLine("i am AProgram fun.");
    19         }
    20         static void Main(string[] args)
    21         {
    22             IProgram p = new Program();
    23             //((IProgram)p).Fun();
    24             p.Fun();
    25 
    26             Console.ReadKey();
    27         }
    28     }

    先进行接口的实现,然后再调用抽象函数。

    接口和抽象类的区别。
    接口用于规范,抽象类用于共性。
    接口中只能声明方法,属性,事件,索引器。而抽象类中可以有方法的实现,也可以定义非静态的类变量。
    抽象类是类,所以只能被单继承,但是接口却可以一次实现多个。
    抽象类可以提供某些方法的部分实现,接口不可以。
    抽象类的实例是它的子类给出的。接口的实例是实现接口的类给出的。
    在抽象类中加入一个方法,那么它的子类就同时有了这个方法。而在接口中加入新的方法,那么实现它的类就要重新编写(这就是为什么说接口是一个类的规范了)。
    接口成员被定义为公共的,但抽象类的成员也可以是私有的、受保护的、内部的或受保护的内部成员(其中受保护的内部成员只能在应用程序的代码或派生类中访问)。
    此外接口不能包含字段、构造函数、析构函数、静态成员或常量。
    C#中的接口和类有什么异同。
    异:
    不能直接实例化接口。
    接口不包含方法的实现。
    接口可以实现多继承,而类只能是单继承。
    类定义可在不同的源文件之间进行拆分。
    同:
    接口、类和结构可从多个接口继承。
    接口类似于抽象基类:继承接口的任何非抽象类型都必须实现接口的所有成员。
    接口可以包含事件、索引器、方法和属性。
    一个类可以实现多个接口。

  • 相关阅读:
    原生Js自适应浏览器宽度的瀑布流布局
    Fixed Gear DIY整车配色 JavaScript版制作过程
    DOM结构——两个节点之间可能存在哪些关系以及如何在节点之间任意移动
    盒模型 块级元素与行内元素 浮动元素
    Js 页面元素 简单震动效果
    CSS引入的方式有哪些? link和@import的区别?
    一道Web前端面试题 DIV放大
    js在IE和Firefox下不同之处
    Doctype? 严格模式与混杂模式如何触发这两种模式,区分它们有何意义?
    JavaScript document属性和方法
  • 原文地址:https://www.cnblogs.com/tanzhen/p/4097613.html
Copyright © 2011-2022 走看看