接口通过类继承来实现,一个类虽然只能继承一个基类,但可以继承任意接口。声明实现接口的类时,需要在基类列表中包含类所实现的接口的名称。

例1

创建一个控制台应用程序,该程序在例1 的基础上实现,Program 类继承自接口 ImyInterface,并实现了该接口中的所有属性和方法。然后在 Main 方法中实例化 Program 类的一个对象,并使用该对象实例化 ImyInterface 接口。最后通过实例化的接口对象访问派生类中的属性和方法。

代码如下:

class Program:ImyInterface                            //继承自接口
{string id ="";      string name ="";public string ID                                //编号 {get{return id;}set{id = value;}}public string Name                                 //姓名{get{return name;}set{name = value;}}public void ShowInfo()                            //显示定义的编号和姓名{Console.WriteLine(("编号\t 姓名");Console.WriteLine(ID+"\t"+Name);}static void Main(string[] args){Program program = new Program();             //实例化 Program 类对象 ImyInterface imyinterface = program;         //使用派生类对象实例化接口 ImyInterface imyinterface.ID="TM";                        //为派生类中的ID属性赋值imyinterface.Name="C# 3.5 从入门到应用开发";   //为派生类中的 Name 属性赋值      }
}

按 Ctrl+F5 键查看运行结果,

上面的实例中只继承了一个接口,接口还可以多重继承,用多重继承时,要继承的接口之间用逗号(,)分隔。

例2

创建一个控制台应用程序,其中声明 3个接口、IPeopleI、ITeacher 和 IStudent,其中,ITeacher 和 IStudent 继承自IPeople。然后使用Program类继承这3个接口,并分别实现这3个接口中的属性和方法。

代码如下:

interface IPeople
{string Name                                   //姓名 {get; set;}string Sex                                    //性别 {get; set;}
}
interface ITeacher:IPeople                         //继承公共接口
{void teach();                                //教学方法
}
interface IStudent:IPeople                        //继承公共接口
{void study();                              //学习方法
}
class Program:IPeople,ITeacher,IStudent         //多接口继承
{string name = "";string sex = "";public string Name                       //姓名 {get{return name;}set{name = value;}}public string Sex                        //性别 {get{return sex;}set{sex = value;}}public void teach()                      //教学方法 {Console.WriteLine(Name +""+ Sex+"教师");}public void study()                       //学习方法 {Console.WriteLine(Name +""+Sex +"学生");}static void Main(string[] args){Program program = new Program();     //实例化类对象 ITeacher iteacher = program;        //使用派生类对象实例化接口 ITeacher iteacher.Name ="TM";iteacher.Sex ="男";iteacher.teach();IStudent istudent = program        //使用派生类对象实例化接口 IStudentistudent.Name ="C#";istudent.Sex ="男";istudent.study();}
}

按 Ctrl+F5 键查看运行结果,

技术群:添加小编微信并备注进群

小编微信:mm1552923

公众号:dotNet编程大全

C# 接口的实现与继承相关推荐

  1. 25接口之间的单继承

    Demo01Relations.java package Relations; /* * 1.类与类之间是单继承的.直接父类只有一个. * 2.类与接口是多实现的.一个类可以实现多个接口. * 3.接 ...

  2. java接口构建英雄属性_Python接口类的多继承以及抽象类的单继承

    一.接口类(面向对象开发的思想和规范)的多继承 需求: 定义一个tiger类:会走,会游 定义一个hawk类:会走,会飞 定义一个swan类:会走,会游,会飞 (a)如果像以下代码的方式,则不能够满足 ...

  3. 接口和抽象类是否继承了Object

    我们先看一下Java的帮助文档对于Object的描述: Class Object is the root of the class hierarchy. Every class has Object ...

  4. 面向对象的故事~数据底层操作告诉了我们接口,抽象类,继承与多态性的使用~续(TestBase继承ITest是多余的?)...

    在我上一篇文章发表后,收到了很多博友的回复,其中有一位博友提了一个问题,TestBase 继承了ITest是多余的,我认为,我有必要再写一篇文章来说明一下,TestBase为什么要继承ITest,当然 ...

  5. java接口类支持多继承

    一个类只能extends一个父类,只能有一个父类,但可以implements多个接口.java通过使用接口的概念来取代C++中多继承.与此同时,一个接口则可以同时extends多个接口,却不能impl ...

  6. java接口+Java支持多继承吗?

    java接口+Java支持多继承吗? 1.接口使用interface(接口)关键字修饰 2.接口中的方法默认都是全局抽象方法,即默认public abstract修饰 3.接口不能直接new对象,必须 ...

  7. 接口可以继承抽象类吗_Python接口类的多继承以及抽象类的单继承

    一.接口类(面向对象开发的思想和规范)的多继承 需求: 定义一个tiger类:会走,会游 定义一个hawk类:会走,会飞 定义一个swan类:会走,会游,会飞 (a)如果像以下代码的方式,则不能够满足 ...

  8. 接口类的多继承以及抽象类的单继承

    接口类的多继承以及抽象类的单继承 一.接口类(面向对象开发的思想和规范)的多继承 需求: 定义一个tiger类:会走,会游 定义一个hawk类:会走,会飞 定义一个swan类:会走,会游,会飞 (a) ...

  9. java继承类长方形面积_java_java用接口、多态、继承、类计算三角形和矩形周长及面积的方法,本文实例讲述了java用接口、多 - phpStudy...

    java用接口.多态.继承.类计算三角形和矩形周长及面积的方法 本文实例讲述了java用接口.多态.继承.类计算三角形和矩形周长及面积的方法.分享给大家供大家参考.具体如下: 定义接口规范: /** ...

  10. BookCollectionSoftware - 图书管理(知识点糅合::类,对象,抽象类,接口,封装,继承,多态,顺序表)- java - 细节狂魔

    文章目录 前言 图书管理应实现的功能 准备工作 开始操作 先在book包,创建一个Book类,用来存储一本书的信息 小技巧: 根据小技巧来创造我们的 构造方法,公开的输入输出的接口,,还要重写的toS ...

最新文章

  1. HEAP: Free Heap block XXXX modified at XXXX after it was freed
  2. Vue+axios配置踩坑记录
  3. fwrite视频写入帧率测试(不用测了。。)
  4. 三个分级基金(银华100、申万深成、国联双禧)对比图(zz from Fund@newsmth)
  5. lisp eval apply_SICP远古魔法-LISP概览(1-2)
  6. leetcode292. Nim 游戏
  7. 数据集_自动驾驶数据集
  8. android禁用应用组件,Android彻底退出(关闭)应用程序.docx
  9. vcftools报错:Writing PLINK PED and MAP files ... Error: Could not open temporary file.解决方案
  10. 禁止snmpd写入日志到syslog
  11. mingw w64 v8.0.0_R 4.0发布,配套编译工具Rtools 40发布
  12. 在Node.js中发起HTTP请求的5种方法
  13. 计算机程序设计在线课程,最新章节测试答案2020学堂在线计算机程序设计基础(先修课)...
  14. 27岁没文凭自学编程成为程序员难不难
  15. 古体字与简体字对照表_古代汉语必备简化字与繁体字对照表
  16. SQL数据库移植到ARM板步骤
  17. Unbalanced calls to begin/end appearance transitions for
  18. Java去除首尾指定字符串
  19. Cadence原理图DRC检查介绍
  20. Echarts 图表不能渲染问题整理

热门文章

  1. 大数据技术之HBase原理与实战归纳分享-上
  2. 盛大云业务重点转向自服务
  3. 苹果专利战的背后:灭掉谷歌是目的
  4. ios相机内存_邱哥教你iPhone优化照片占用空间,节省内存
  5. QEMU中的CPU类型设计
  6. 今天是我二十一岁的生日
  7. Flutter Channel stable, 0.0.0-unknown, on Microsoft Windows [Version 10.0.18362.1016]
  8. 网络劫持是什么意思?如何理解?如何检测
  9. vim (整行,多行,一个单词)复制
  10. vim复制和粘贴一整行和复制多行