C#接口(Interface)

devtools/2025/2/3 17:02:54/

C#中的接口

接口是C#中一种重要的概念,它定义了一组函数成员,但不实现它们。接口提供了一种标准结构,使得实现接口的类或结构在形式上保持一致。接口定义了属性、方法和事件,这些都是接口的成员,但接口只包含成员的声明,具体的实现由派生类负责

定义接口

接口使用interface关键字声明,通常接口名称以大写字母“I”开头。

接口的作用

接口为代码编写和程序开发提供了一个“协定”,即一个规范。使用接口可以确保不同的类实现相同的方法,从而提高代码的可维护性和扩展性。例如,如果有多个类需要实现一个共同的方法,可以通过接口来约束这些类

接口的继承

namespace 接口
{internal class Program{static void Main(string[] args){总结:1.接口不能使用static2.接口中的成员不能使用访问修饰符,所有的成员默认都是public,但是public也不能写3.类或者结构体实现的时候,类的成员相对于接口成员,只能多,不能少4.如果接口中规定的属性拥有get和set,类中必须都有,如果接口中只有get,类中可以有get和set5.当类实现多个接口的时候,使用 ,分割6.当类同时继承和实现接口的时候,必须把基类放在前面}}//定义一个接口,接口的名字一般以I开头//格式: interface 接口的名称  {成员}interface IPeople{string Name { get; set; }double Height {  get; set; }void FF();}//当某个类或者结构体实现一个接口的时候,必须实现这个接口所有的成员interface IPerson{string Sex { get; set; }}//一个类可以使用,实现多个接口class All : IPeople, IPerson{public string Name { get; set; }public double Height { get; set; }public string Sex { get; set; }public void FF() { }}interface IStudent{string Name { get; set; }int Age {  get; set; }}interface IAdult{double Height { get; set; }}class People : IStudent{public string Name { get; set; }public double Height { get; set; }public int Age { get; set; }}//: 作用  类的继承   接口的实现class Student : People, IAdult{//当基类和接口中,拥有同名的属性的时候,派生类不需要自己实现//可以用new关键字重新实现public new double  Height { get; set; }}}
  //多接口interface IA{string A { get; set; }string B { get; set; }int C { get; set; }void FF(int f);}interface IB{string B { get; set; }string C { get; set; }string D { get; set; }void FF(string f);}//一个类可以实现多个接口class Both : IA, IB{public string A { get; set; }//当一个类实现多个接口的时候,如果多个接口拥有相同类型的属性,只需要实现一个即可public string B { get; set; }public string D { get; set; }//当一个类显示多个接口的时候,如果多个接口拥有不同类型的相同的属性,需要显示接口实现//显示接口实现 不需要也不能加访问修饰符,这个成员访问需要将对象表示为对应的接口类型int IA.C { get; set; }string IB.C { get; set; }//因为方法可以重载 ,所以可以直接重载两个接口的方法public void FF(int f) { }public void FF(string f) { }}
  interface IPeople{string Name { get; set; }int Age { get; set; }}interface IStudent : IPeople{string StudentId { get; set; }void Study();}//一个接口可以继承另外一个接口,如果一个接口b继承了接口a,某个类实现了接口b的时候,要实现a和b所有的成员class Student : IStudent{//鼠标悬浮到报错的地方,--->显示可能修补的程序-->实现接口public string StudentId { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }public string Name { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }public int Age { get => throw new NotImplementedException(); set => throw new NotImplementedException(); }public void Study(){throw new NotImplementedException();}}

总结:

接口在C#中提供了一种标准化的方式来定义类或结构应遵循的合同。它们提高了代码的可维护性和扩展性,使得不同的类可以实现相同的方法,从而方便统一管理和调用


http://www.ppmy.cn/devtools/155772.html

相关文章

Van-Nav:新年,将自己学习的项目地址统一整理搭建自己的私人导航站,供自己后续查阅使用,做技术的同学应该都有一个自己网站的梦想

嗨,大家好,我是小华同学,关注我们获得“最新、最全、最优质”开源项目和高效工作学习方法 Van-Nav是一个基于Vue.js开发的导航组件库,它提供了多种预设的样式和灵活的配置选项,使得开发者可以轻松地定制出符合项目需求…

两种交换排序算法--冒泡,快速

目录 1.冒泡排序原理 2.快速排序原理 3.冒泡代码实现 4.快速排序代码实现 1.冒泡排序原理 冒泡排序(Bubble Sort)是一种简单的排序算法,基本思想是通过反复交换相邻的元素,直到整个序列有序。它的名字来源于较大的元素像气泡…

K8s介绍代理外部服务的svc几种方式

在 Kubernetes 中,若需让集群内应用访问外部服务,可通过以下 **Service 配置方式**实现代理: --- ### 1. **ClusterIP Service 手动维护 Endpoints** - **原理**:创建 ClusterIP 类型的 Service 并手动指定 Endpoints&#xff…

java异常处理——try catch finally

单个异常处理 1.当try里的代码发生了catch里指定类型的异常之后,才会执行catch里的代码,程序正常执行到结尾 2.如果try里的代码发生了非catch指定类型的异常,则会强制停止程序,报错 3.finally修饰的代码一定会执行,除…

【懒删除堆】力扣3092. 最高频率的 ID

你需要在一个集合里动态记录 ID 的出现频率。给你两个长度都为 n 的整数数组 nums 和 freq ,nums 中每一个元素表示一个 ID ,对应的 freq 中的元素表示这个 ID 在集合中此次操作后需要增加或者减少的数目。 增加 ID 的数目:如果 freq[i] 是正…

计算机网络 笔记 网络层 3

IPv6 IPv6 是互联网协议第 6 版(Internet Protocol Version 6)的缩写,它是下一代互联网协议,旨在解决 IPv4 面临的一些问题,以下是关于 IPv6 的详细介绍: 产生背景: 随着互联网的迅速发展&…

shallowRef和shallowReactive的用法以及使用场景和ref和reactive的区别

Vue3 浅层响应式 API 1. ref vs shallowRef 1.1 基本概念 ref: 深层响应式,会递归地将对象的所有属性转换为响应式shallowRef: 浅层响应式,只有 .value 的改变会触发更新,不会递归转换对象的属性 1.2 使用对比 // ref 示例 const deepRe…

数据结构与算法之栈: LeetCode 641. 设计循环双端队列 (Ts版)

设计循环双端队列 https://leetcode.cn/problems/design-circular-deque/description/ 描述 设计实现双端队列。 实现 MyCircularDeque 类: MyCircularDeque(int k) :构造函数,双端队列最大为 k 。boolean insertFront():将一个元素添加到双端队列头部…