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人开发,而他们共同做的内容是抓取视频,那么就可以定义一个视频的接口,每一个类都必须实现这个抓取视频的方法,而后面新来的程序员,或其他平台,都继承这个接口,并且都要实现方法,这样就很好的规范了代码的编写。

相关文章
|
2月前
|
开发框架 .NET C#
C#|.net core 基础 - 删除字符串最后一个字符的七大类N种实现方式
【10月更文挑战第9天】在 C#/.NET Core 中,有多种方法可以删除字符串的最后一个字符,包括使用 `Substring` 方法、`Remove` 方法、`ToCharArray` 与 `Array.Copy`、`StringBuilder`、正则表达式、循环遍历字符数组以及使用 LINQ 的 `SkipLast` 方法。
|
2月前
|
编译器 C#
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
120 65
|
2月前
|
C#
C# 接口(Interface)
接口定义了所有类继承接口时应遵循的语法合同。接口定义了语法合同 "是什么" 部分,派生类定义了语法合同 "怎么做" 部分。 接口定义了属性、方法和事件,这些都是接口的成员。接口只包含了成员的声明。成员的定义是派生类的责任。接口提供了派生类应遵循的标准结构。 接口使得实现接口的类或结构在形式上保持一致。 抽象类在某种程度上与接口类似,但是,它们大多只是用在当只有少数方法由基类声明由派生类实现时。 接口本身并不实现任何功能,它只是和声明实现该接口的对象订立一个必须实现哪些行为的契约。 抽象类不能直接实例化,但允许派生出具体的,具有实际功能的类。
49 9
|
3月前
|
安全 C#
C# 面向对象编程的三大支柱:封装、继承与多态
【9月更文挑战第17天】在C#中,面向对象编程的三大支柱——封装、继承与多态,对于编写安全、可维护、可复用的代码至关重要。封装通过访问修饰符和属性保护数据;继承允许子类继承父类的属性和方法,实现代码复用和多态;多态则提高了代码的灵活性和通用性。掌握这三大概念能显著提升C#编程能力,优化开发效率和代码质量。
|
2月前
|
Java 程序员 C#
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
【类的应用】C#应用之派生类构造方法给基类构造方法传参赋值
14 0
|
3月前
|
C# 索引
C# 一分钟浅谈:接口与抽象类的区别及使用
【9月更文挑战第2天】本文详细对比了面向对象编程中接口与抽象类的概念及区别。接口定义了行为规范,强制实现类提供具体实现;抽象类则既能定义抽象方法也能提供具体实现。文章通过具体示例介绍了如何使用接口和抽象类,并探讨了其实现方式、继承限制及实例化差异。最后总结了选择接口或抽象类应基于具体设计需求。掌握这两者有助于编写高质量的面向对象程序。
125 5
|
3月前
|
存储 C#
C# 一分钟浅谈:继承与多态性的实践
【9月更文挑战第2天】本文从基础入手,详细介绍了面向对象编程中继承与多态性的核心概念。通过 `Animal`、`Dog` 和 `Cat` 类的示例代码,展示了如何利用继承重用代码及多态性实现不同对象对同一方法的多样化响应,帮助读者更好地理解和应用这两个重要概念,提升面向对象编程能力。
45 3
|
1月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
33 3
|
24天前
|
设计模式 C# 图形学
Unity 游戏引擎 C# 编程:一分钟浅谈
本文介绍了在 Unity 游戏开发中使用 C# 的基础知识和常见问题。从 `MonoBehavior` 类的基础用法,到变量和属性的管理,再到空引用异常、资源管理和性能优化等常见问题的解决方法。文章还探讨了单例模式、事件系统和数据持久化等高级话题,旨在帮助开发者避免常见错误,提升游戏开发效率。
38 4
|
3月前
|
API C#
C# 一分钟浅谈:文件系统编程
在软件开发中,文件系统操作至关重要。本文将带你快速掌握C#中文件系统编程的基础知识,涵盖基本概念、常见问题及解决方法。文章详细介绍了`System.IO`命名空间下的关键类库,并通过示例代码展示了路径处理、异常处理、并发访问等技巧,还提供了异步API和流压缩等高级技巧,帮助你写出更健壮的代码。
46 2