C# 类(9) - 接口 Interface
Interface
接口 类似 抽象类,也不能被实例化。。。(前面说的静态类,加上抽象类,还有这个,都3个了)
接口其实比 抽象类 更加抽象。接口的方法(这个方法还不能有实体代码,和抽象类的抽象方法差不多)
接口也支持属性Properties
Indexers
和events
(还记得属性吗?前面的支持 get 和 set 方法的一个东东)
由于C#不支持多继承,当一个类的:
后面接了多个name,这些name其实都是接口
看图 ,首先建造一个 纯Dog的list,添加3条狗,然后对狗狗进行名字排序后输出Describe
方法的内容,这里涉及到两个操作,排序和输出
看看接口是如何调用的
这里定义了一个接口IAnimal
(约定俗成的,接口一般都用I
开头,做到看名知意), 它有一个Name属性,一个Describe
方法
然后开始定义Dog类,继承了两个(这里不能继承两个类,因为C#不支持多继承,只能继承接口了,继承的接口可以写多个)
从第一个接口继承的Describe 方法,在Dog里 重构成了返回狗狗的Name
从第二个接口继承的CompareTo方法,在Dog里 重构成了 返回两个狗狗的Name排序结果
注意到了没,我们在接口的方法里 没用到 Visibility
的限定词,像private
,public
,proteced
等等,因为在接口里这些是不允许的,对于接口而言,都是public,任何人都能访问
我们从接口继承后,跟我们从 class继承的方式,很类似,都是继承呀,重构呀
附上原文的解释
为啥能给狗排序?因为狗有CompareTo
方法
为啥数组能知道狗狗能排序并且知道调用哪个函数给狗排序? 因为我们给狗狗设置了带有 CompareTo
方法的接口,这个方法是.Net自动为排序设置的一个接口方法
原文地址:https://www.cnblogs.com/springbrotherhpu/p/11553196.html
- 文件实时同步后防篡改的操作记录
- web中的水晶报表 "出现通信错误。将停止打印"
- nginx反向代理中proxy_set_header 运维笔记
- 期待已久的直播能力开放了!年底之前来波大的
- 两个目录中,删除其中一个目录中同名文件的做法
- linux下监控某个目录是否被更改
- centos下升级git版本的操作记录
- linux下core file size设置笔记
- linux下文件加密操作记录
- python的with语句,超级强大
- “AS3.0高级动画编程”学习:第二章转向行为(上)
- Linux下性能调试工具-top和sar运维笔记
- Apache+wsgi+flask部署
- “勒索病毒”到底会勒索啥,尽可以做到让全球对之恐惧无奈!
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MGR用哪个版本?5.7 vs 8.0
- 同事直呼666!小姐姐仅用3行代码就能玩出花来
- MySQL升级至8.0需要考虑哪些因素?
- 某云Music——JS破解全过程
- 和低效 IO 说再见,回头补一波 Java 7 的 NIO.2 特性
- 框架源码调试实战之easypoi异常解决方案精讲
- MySQL8.0的错误日志
- Shiro学习笔记(一)
- Shiro学习笔记(二)
- Shiro学习笔记 三(认证授权)
- Shiro学习笔记四(Shiro集成WEB)
- Shiro学习笔记五(Shiro标签,及通配符)
- Shiro学习笔记六(自定义Reaml-使用数据库设置 user roles permissions)
- Luncene学习 第一天 《入门程序》
- Luncene学习二《搜索索引》