zoukankan      html  css  js  c++  java
  • 如何证明接口也是对象

    记得很久很久以前跟同事有关于接口是不是object一争.
    我当然是认为接口是object了,一起皆是对象哇.不过同事却不已为然,他反驳的理由我现在已经想不起来的.稍微有点印象就是我当时苦苦寻找interface是object的证据.
    一开始盯上interface这个关键字,看看它是不是继承自object,,后来发现它实际上根本就不是什么类,只是一个声明的关键字而已.就如我们想要定义一个值类型,我们不是去声明它继承自ValueType类,而是用struct声明它,就能表明我们定义的是一个值类型,在FCL里是根本找不到这个struct类的.用struct声明的类,编译器会自动将其继承ValueType类,这个用Reflector看一下就知道了.
    这个interface就相当于struct,只是个语义上的声明关键字,而没有存在一个实际的类与之对应.
    后来想想应该将目标聚集到象IComparable之类的,这个才是真正的接口.然而我用Reflector查看时,根本没找着它的基类.所以当时只是"固执"地认为"一切皆是对象,接口固然是对象",然后心里的底气是不足的,没有找到强硬的理由来说服自己.

    今天在重看<<CLR Via C#>>关于box跟unbox一节时突然意思到其实方法很简单:
        public class Test
        {
            public static string GetString(object o)
            {
                return "Get it!";
            }
        }
        public static void Main(string[] args)
        {
            IComparable ic = (IComparable)6;
            Test.GetString(ic);
        }
    编译器就能告诉我们答案.因为GetString()方法只接受object类型,而我们传入一个IComparable接口类型依然可以工作的很好,那么足以证明接口也是对象了.

    一切皆是对象.

  • 相关阅读:
    xcode debug
    ios 使用Quartz 2D画虚线
    ios UIGestureRecognizer
    ios 实现带矩形框的屏幕截图
    ios UISegemetedControl
    centos最小安装之后无法使用ifconfig
    无线LoRa智能远传水表
    智能水表188协议汇总
    无线LoRa远传智能水表
    静电除尘器除尘原理
  • 原文地址:https://www.cnblogs.com/anders06/p/748708.html
Copyright © 2011-2022 走看看