• C# 类(9)


    Interface

    接口 类似 抽象类,也不能被实例化。。。(前面说的静态类,加上抽象类,还有这个,都3个了)
    接口其实比 抽象类 更加抽象。接口的方法(这个方法还不能有实体代码,和抽象类的抽象方法差不多)
    接口也支持属性Properties Indexersevents(还记得属性吗?前面的支持 get 和 set 方法的一个东东)
    由于C#不支持多继承,当一个类的:后面接了多个name,这些name其实都是接口
    看图 ,首先建造一个 纯Dog的list,添加3条狗,然后对狗狗进行名字排序后输出Describe方法的内容,这里涉及到两个操作,排序和输出

    看看接口是如何调用的

    这里定义了一个接口IAnimal(约定俗成的,接口一般都用I开头,做到看名知意), 它有一个Name属性,一个Describe方法
    然后开始定义Dog类,继承了两个(这里不能继承两个类,因为C#不支持多继承,只能继承接口了,继承的接口可以写多个)
    从第一个接口继承的Describe 方法,在Dog里 重构成了返回狗狗的Name
    从第二个接口继承的CompareTo方法,在Dog里 重构成了 返回两个狗狗的Name排序结果

    注意到了没,我们在接口的方法里 没用到 Visibility 的限定词,像privatepublicproteced 等等,因为在接口里这些是不允许的,对于接口而言,都是public,任何人都能访问

    我们从接口继承后,跟我们从 class继承的方式,很类似,都是继承呀,重构呀


    附上原文的解释

    为啥能给狗排序?因为狗有CompareTo方法
    为啥数组能知道狗狗能排序并且知道调用哪个函数给狗排序? 因为我们给狗狗设置了带有 CompareTo方法的接口,这个方法是.Net自动为排序设置的一个接口方法

  • 相关阅读:
    R语言实战学习总结
    R语言学习笔记(十七):高级绘图ggplot2
    R语言学习笔记(十六):处理缺失值
    R语言学习笔记(十五):分类
    R语言学习笔记(十四):聚类分析
    R语言学习笔记(十三):时间序列
    R语言学习笔记(十二):主成分分析和因子分析
    转:网页不应该出现的特殊字符
    转:html常用网页特殊字符代码大全,值得收藏!
    转:LoadRunner 12 安装教程
  • 原文地址:https://www.cnblogs.com/springbrotherhpu/p/11553196.html
Copyright © 2020-2023  润新知