• C#中的interface


    C#中的interface 其实是一种协议(Protocol)。在MSDN的接口(C#)中是如下定义的:An interface contains only the signatures of methods, properties, events or indexers.很明显,这里没有提到接口方法具有多态特性——这与Java中interface方法具有天然多态效应不一定。C# interface的接口默认为public,且不能具有virtual特性[1]。有些奇怪的实现方法,会强迫接口表现出多态性,我个人是不喜好的。偏门的且违背本意的的东西尽量不碰,甚至不去理解学习——恰如当年都不去看goto章节一样。

    这只能让我得出结论,C#的interface只是一种契约(Contract),一种协议(Protocol)。

    在MSDN的编程C#编程指南关于多态[2]的表述中,也没有提到接口。其中关于多态的两个表现特征的描述之一如下:

    基类可以定义并实现方法,派生类可以重写这些方法,即派生类提供自己的定义和实现。在运行时,客户端代码调用该方法,CLR 查找对象的运行时类型,并调用虚方法的重写方法。因此,你可以在源代码中调用基类的方法,但执行该方法的派生类版本。[2]

     ”

    即在基类与子类间,利用virtual & override 实现多态特性。 

    [1] C# interface, https://msdn.microsoft.com/zh-cn/library/87d83y5b.aspx

    [2] 多态, https://msdn.microsoft.com/zh-cn/library/ms173152.aspx

  • 相关阅读:
    (2015年郑州轻工业学院ACM校赛题) B迷宫
    (2015年郑州轻工业学院ACM校赛题) A 彩票
    POJ 1861 Network
    动态逆序对
    K大数查询
    Dynamic Rankings
    Cleaning
    Boxes
    P3601 签到题
    How many integers can you find
  • 原文地址:https://www.cnblogs.com/jjseen/p/5129554.html
Copyright © 2020-2023  润新知