博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
接口如何实现多态
阅读量:5033 次
发布时间:2019-06-12

本文共 1576 字,大约阅读时间需要 5 分钟。

由于继承有单根性这一个特点,也就是说一个类只能继承与一个父类,但是有时候我们需要继承多个类,那莪这样就有了接口的出现,

接口实现让一个类可以继承多个类,继承的多个类实际上就是继承的接口

接口使用interface关键字来表示一个类是一个几接口

接口的特点

1、接口中的成员不能有任何实现(“光说不做”,只是定义了一组未实现的成员)

2、为了多态。接口不能被实例化。也就是说,接口不能new(不能创建对象)
3、只要一个类继承了一个接口,这个类就必须实现这个接口中所有的成员
4、接口中的成员不能加“访问修饰符”,接口中的成员访问修饰符默认为public,且不能修改。
5、接口中只能有方法、属性、索引器、事件,不能有“字段”和构造函数。
6、接口与接口之间可以继承,并且可以多继承
7、接口并不能去继承一个类,而类可以继承接口 (接口只能继承于接口,而类既可以继承接口,也可以继承类)
8、一个类可以同时继承一个类并实现多个接口,如果一个子类同时继承了父类A,并实现了接口IA,那么语法上A必须写在IA的前面。

//真的鸭子会游泳 木头鸭子不会游泳 橡皮鸭子会游泳 //不同的鸭子游泳的方式不一样,所以在父类中我不知道怎么实现,所以这里考虑使用接口的方法  public interface ISwimming    {        void Swim(); } public class RealDuck:ISwimming { public void Swim() { Console.WriteLine("真的鸭子靠翅膀游泳"); } } public class XPDuck : ISwimming { public void Swim() { Console.WriteLine("橡皮鸭子飘着游泳"); } } public class MuDuck { //这里因为木头鸭子不会游泳,所以不继承接口也就不用实现接口中的方法 }

同样我们在Main方法中调用一下

static void Main(string[] args){     ISwimming swim = new XPDuck();//new RealDuck(); swim.Swim(); //橡皮鸭子飘着游泳 }

其实会发现接口和抽象类实现多态很相似,只是接口更加注重的是方法的实现

上面提到接口和接口之间可以继承,并且接口可以继承多个接口,那么如果一个类继承了一个有多继承的接口时,这个类中需要将所有继承链上的方法全部实现

就像下面酱紫————————

public interface M1    {        void Test1();    }    public interface M2 { void Test2(); } public interface M3 { void Test3(); } //下面这个接口继承了多个接口 public interface SupperInterface : M1, M2, M3 { } //这个类继承了一个有多个继承的接口,所以需要实现继承链上的所有方法 public class Car : SupperInterface { public void Test1() { throw new NotImplementedException(); } public void Test2() { throw new NotImplementedException(); } public void Test3() { throw new NotImplementedException(); } }

转载于:https://www.cnblogs.com/sisi-job/p/8798496.html

你可能感兴趣的文章
逆时针旋转的矩阵变换
查看>>
第10周15/16/17
查看>>
四六级作文常见错误解析(转载)
查看>>
Tomcat
查看>>
./是当前目录 ../是当前的上一级目录。上上级就是../../一般绝对路径时候常用...
查看>>
linux支持FTP和SFTP服务【1】
查看>>
树的递归与非递归遍历方法
查看>>
每天一个Linux命令(6):rmdir命令
查看>>
oracle连接的三个配置文件(转)
查看>>
Vim配置文件(Vimrc)
查看>>
RecyclerView 局部刷新(获取viewHolder 去刷新)
查看>>
PHP表单(get,post)提交方式
查看>>
使用vbs或者bat脚本修改IE浏览器安全级别和选项
查看>>
Silverlight入门
查看>>
LeetCode 895. Maximum Frequency Stack
查看>>
模仿segmentfault 评论
查看>>
一个简单的日志函数C++
查看>>
Java 8 中如何优雅的处理集合
查看>>
IOS程序的启动过程
查看>>
连接Linux下 XAMPP集成环境中部署的禅道的数据库MariaDB
查看>>