当前位置: 首页 > news >正文

C# 接口(interface 定义接口的关键字)

目录

使用接口案例

接口继承

练习


定义一个接口,在语法中与定义一个抽象类是没有区别的,但是不允许提供接口中任意成员的实现方式,一般接口只会包含方法 、索引器和事件的声明, 不允许声明成员的修饰符, public都不行 。因为接口总是共有的 ,也不能声明虚拟和静态。 

接口不会有构造函数  也不能有数据字段

接口不能被实例化

使用接口案例

定义接口  IFiy

//interface 定义接口的关键字
internal interface IFiy
{//定义没有实现的方法//飞  可以有参数void Fly();//攻击void Attack();}

定义一个Plane飞机类继承 IFiy接口

internal class Plane : IFiy
{public void Attack(){Console.WriteLine("飞机在空中战斗");}public void Fly(){Console.WriteLine("飞机在空中飞");}
}

定义一个 Brid鸟类继承 IFiy接口,接口可以被多个类继承

internal class Brid : IFiy
{public void Fly(){Console.WriteLine("小鸟在空中飞");}public void Attack(){Console.WriteLine("小鸟在空中捕猎");}
}

主函数

static void Main(string[] args)
{// 接口不会有构造函数  也不能有数据字段Plane plane = new Plane();plane.Fly();//接口不能被实例化;//使用接口的具体操作IFiy fiy;fiy = new Plane();fiy.Fly();// 飞机的飞fiy = new Brid();fiy.Fly();//小鸟的飞//使用接口创建一个变量  写了两个构造 这在编程中叫做多态  
//因为fiy发生了变化 之前是飞机  后面变成了小鸟  所以他的形态是可以变化的 这种语法在C#中叫做  多态
}

接口继承

接口与接口之间的继承

internal interface Interface1
{void YY();
}
internal interface Interface2
{void cy();
}
//接口与接口之间的继承
internal interface Interface3 : Interface1 , Interface2
{void Show();
}
 //接口Interface3中含有三种方法,一个自己的两个继承的
internal class Class1 : Interface3{public void cy(){throw new NotImplementedException();}public void Show(){throw new NotImplementedException();}public void YY(){throw new NotImplementedException();}}
//定义一个抽象类模板
internal abstract class Student
{public int Id { get; set; }public string Name { get; set; }public string Addres {  get; set; }public string Phone {  get; set; }public int  Age { get; set; }  
}
 // ,Interface1 接口继承//在继承中 除了第一个要继承的类或则是接口使用:  后面再继承的接口要使用逗号隔开// 类是不允许多继承的  每个类只能有一个基类internal class Yse : Student, Interface1 , Interface2{public Yse(string name) {Name = name;}public void YY(){Console.WriteLine($"{Name}是会游泳的学生");}public void cy(){Console.WriteLine($"{Name}会唱歌");}}
internal class No : Student , Interface2
{public void cy(){Console.WriteLine($"{Name}会跳舞");}
}
static void Main(string[] args)
{Yse y = new Yse("张三");y.Name = "张三";y.YY();y.cy();Interface1 i;i = new Yse("张三");i.YY();// 接口的多态Interface1 i1;i1 = new Yse("李四");i1.YY();}

练习

定义一个接口用来做数学运算 既可以做加法也可以做减法  通过具体的数学操作类(加法类 减法类)去实现接口中的方法 完成操作  提示:运用接口的多态性

主函数

internal class Program
{static void Main(string[] args){Math m;m = new Add();Console.WriteLine(m.Maths(10,20)); // 30  加法  m = new Sub();Console.WriteLine(m.Maths(10,20)); // -10  减法}
}

创建一个Math接口

internal interface Math
{double Maths(double a , double b);}

加法类

internal class Add :Math
{public double Maths(double a,double b){return a + b;}
}

减法类

internal class Sub : Math
{public double Maths(double a, double b){return a - b;}
}
http://www.dtcms.com/a/302211.html

相关文章:

  • JVM 垃圾回收机制全景解析:从对象回收到收集算法
  • Spring Boot日志开发实战手册:集成/输出/级别控制/持久化精要
  • MySQL 锁机制 15 连问 · 面试速答版
  • openeuler24.03部署k8s1.32.7集群(一主两从)
  • C primer plus (第六版)第九章 编程练习第6题
  • 基于YOLO11的电梯电瓶车检测系统:让电梯更安全
  • Redis反弹Shell
  • 《Java 程序设计》第 8 章 - Java 常用核心类详解
  • 安装研华板卡驱动
  • 重庆地区通信安全员考试题库及答案
  • tsc命令深入全面讲解
  • 零基础学习性能测试第六章:性能难点-Jmeter文件上传场景压测
  • 【智慧物联网平台】编译jar环境 Linux 系统编译IOT物联网——仙盟创梦IDE
  • React Immer 不可变数据结构的处理
  • Jmeter 性能测试监控之ServerAgent
  • Jmeter的元件使用介绍:(九)监听器详解
  • 10、Docker Compose 安装 MySQL
  • Redis数据量过大的隐患:查询会变慢吗?如何避免?
  • CacheGen:用于快速大语言模型推理服务的 KV 缓存压缩与流式传输
  • 【linux】高可用集群Keepalived
  • 如何给电脑换个ip地址?电脑换ip几种方法
  • 【计算机网络】OSI七层模型
  • AR眼镜:工业4.0时代高风险作业的安全守护者
  • 设计模式(二十二)行为型:策略模式详解
  • 【CSS】设置表格表头固定
  • 【查漏补缺】机器学习典型算法
  • ZeroNews 推出端到端 TLS 终止功能,强化数据传输安全
  • 【IP地址】大型监控项目IP地址如何规划?
  • 3,智能制造,MOM,MES - 精益制造(具体内容参考PPT文档)
  • 浅谈智能体经济(下篇)——Agent工厂与Agent市场