C# 类实现接口(Interface) 多态 多继承

简介: C# 类实现接口(Interface) 多态 多继承

什么是接口

接口在程序中起到规范代码的作用,例如:电脑的USB接口,这些都是已经定义好的了,制造鼠标键盘U盘等厂家就按这种规格做出来的成品在任何电脑上都可以直接使用,而不需要进行适配,这就是规范的使用了接口


接口的特点

  • 类之间的继承关系仅支持单重继承,使用进口可以多继承
  • 一个类可以实现继承很多接口
  • 接口不能有方法体
  • 接口的访问修饰符 只能是 public
  • 使用接口,必须实现类的方法
  • 接口不能实例化成对象
  • 接口不能继承类

接口写法

通常是以 I 开头,再加上其他的单词构成

定义接口

interface  ITest //接口名
{
    void Dog();
    //默认是public 不能修改 不能有方法体
}

继承接口

public class Zoo : ITest 
{
public void Dog()
        {
//类必须实现接口的方法
            Console.WriteLine("汪汪汪");
        }
}

使用接口

InterfaceTest f = new Test();
  f.Dog();
  //接口不能实例化

运行结果:

汪汪汪


接口的多继承

类只能单继承,而接口可以多继承,多个接口使用" , " 号分割

internal interface ICar
    {
        void Do();
    }
internal interface InterfaceTest
    {
        void Dog();
    }
public class Test : InterfaceTest, ICar
    {
        public void Dog()
        {
            Console.WriteLine("InterfaceTest接口");
        }
       public void   Do()
        {
          Console.WriteLine("我是Cre接口");
        }
    }

也可以继承一个类然后再继承多个接口

如果类和接口需要一起继承,那么必须把 父类 放在第一位,后面的接口可以不分顺序

public class Test : 类名,接口,接口,接口
    {
    } 

接口显示调用

假如Zoo类中有一个方法叫Dog ,而接口中有一个方法也叫Dog,这样在实现接口时候就会报错,因为两个方法重名了,这时候就可以使用接口显示的写法了

public class Test : InterfaceTest
    {
        public void Dog()
        {
            Console.WriteLine("类自带的方法");
        }
         void InterfaceTest.Dog()
        {
            Console.WriteLine("实现接口的方法");
        }
    }

需要注意的是,不能添加访问修饰符,默认即public

InterfaceTest f = new Test();
            f.Dog();//使用接口
            Test t = new Test();
            t.Dog();//使用自己的

运行结果:

实现接口的方法

类自带的方法


什么情况使用接口

使用接口可以很好的规范代码的写法,如果有多个人开发一个程序,需要创建很多类,而类做的事又很相似,那么就可以定义一个接口来规范,同时也让程序更好的扩展

例:最近有一个程序需要抓取各个视频平台的视频,抖Y K手…等等各大视频平台还有部分作者的头像信息…主页信息等,每一个视频平台都创建了一个类,共有5人开发,而他们共同做的内容是抓取视频,那么就可以定义一个视频的接口,每一个类都必须实现这个抓取视频的方法,而后面新来的程序员,或其他平台,都继承这个接口,并且都要实现方法,这样就很好的规范了代码的编写。

相关文章
|
1月前
|
C#
C#学习相关系列之数据类型类的三大特性(二)
C#学习相关系列之数据类型类的三大特性(二)
|
1月前
|
IDE C# 开发工具
C#系列之接口介绍
C#系列之接口介绍
|
1月前
|
C#
58.c#:directory类
58.c#:directory类
13 0
|
11天前
|
前端开发 API C#
C# 接口
C# 接口
16 1
|
1月前
|
C#
深入C#中的String类
深入C#中的String类
11 0
|
1月前
|
C#
C#学习系列相关之多线程(二)----Thread类介绍
C#学习系列相关之多线程(二)----Thread类介绍
|
1月前
|
C#
C#学习相关系列之数据类型类----嵌套类和嵌套方法(三)
C#学习相关系列之数据类型类----嵌套类和嵌套方法(三)
|
1月前
|
存储 C# 索引
C#学习相关系列之数据类型类的定义(一)
C#学习相关系列之数据类型类的定义(一)
|
1月前
|
存储 API C#
60.c#:steamreader类
60.c#:steamreader类
12 0
|
1月前
|
API C# vr&ar
59.c#:steamWriter类
59.c#:steamWriter类
17 0