“主板”是一个子系统,“显卡”是一个子系统,那么“卡槽”就是接口。显卡只要符合标准,就可以被主板使用,这个标准就是“接口”。显卡实现了卡槽定义的“标准方法”,就完成显示的功能。主板调用卡槽定义的“标准方法”,那么就使用到了显卡的功能。大家看看这样理解合适吗?小弟在这里有点疑问:

一、从语言角度上讲,接口可以被调用吗?它其中不是只有抽象方法吗?抽象方法怎么可以被调用???二、调用接口中的抽象方法,就可以调用实现接口的类的方法吗?不需要对实现接口的类进行实例化吗???三、如果需要对实现接口的类进行实例化,怎样实例化,通过接口吗???

小弟,对接口使用时的“调用接口”一直不是很明白,有相关实例可以参考吗???
谢谢大家了。

解决方案 »

  1.   

    1.接口:对一组业务的外观和职责的约定,接口不仅仅只有方法声明,也可以声明属性;
    2.类:拥有和实现一组外观和职责,类可以继承一个或多个接口,他必须实现所有接口声明的方法和属性,
      每个继承接口的类都可以拥有自己独特的实现,
    3.使用一个接口就是使用接口声明的职责和外观,而不需要知道具体的实现,
      但是你必须指派一个具体实现这些职责的类,
    4.写个例子说明一下:
    //声明接口
    interface ITest{void TestFunc();}
    //继承接口
    class cTest1:Itest{
        public void TestFunc(){this.FuncA();}//实现接口
        private void FuncA(){throw new NotImplementedException("实现1");}
        }  
    class cTest2:Itest{
        public void TestFunc(){this.FuncB();}//实现接口
        private void FuncB(){throw new NotImplementedException("实现2");}
        private void FuncC();
        }  
    //实例化
    ITest MyInstance1 = new cTest1();
    ITest MyInstance2 = new cTest2();
    //调用
    MyInstance1.TestFunc();
    MyInstance2.TestFunc();
      

  2.   


    谢谢大家。ITest MyInstance1 = new cTest1();
    ITest MyInstance2 = new cTest2();
    //调用
    MyInstance1.TestFunc();
    MyInstance2.TestFunc();时。MyInstance1和MyInstance2对象的“类型”指定时使用了“ITest接口”,而没有使用实例化它们的类“cTest1”和“cTest2”。在实例化的时候才使用到了, 这是怎么回事???“类实现的接口”可以定义“类实例化的对象”的类型,而不用使用“类”来定义,这是怎么回事,里面有一种什么机制呢???所有的语言都这样吗???
      

  3.   


    谢谢大家。ITest MyInstance1 = new cTest1();
    ITest MyInstance2 = new cTest2();
    //调用
    MyInstance1.TestFunc();
    MyInstance2.TestFunc();时。MyInstance1和MyInstance2对象的“类型”指定时使用了“ITest接口”,而没有使用实例化它们的类“cTest1”和“cTest2”。在实例化的时候才使用到了, 这是怎么回事???“类实现的接口”可以定义“类实例化的对象”的类型,而不用使用“类”来定义,这是怎么回事,里面有一种什么机制呢???所有的语言都这样吗???
      

  4.   

    Mark学习。好像和对象的地址有关系。
      

  5.   

    这样说吧,比如我有一个接口,里面就有2个方法 一个OPEN 一个 CLOSE  那么,我有电视类,电脑类,手机类等等等等只要继承了并实现了这个接口,那么我在这个接口上调用OPEN方法 那么我就可以开电视,开电脑,开手机 具体怎么开,要写在实现这个接口的那个类的方法里 工作中看别人的代码有时候只需要看实现了的那个接口里的方法,有哪些功能是我们关心的,怎么实现的就不用看了。
      

  6.   

    7楼正解。所谓的调用接口,就是你可以调用接口的某个实例的方法,而不用确认它的具体类型。与接口和(纯)虚方法/抽象方法关联最紧密的特性是“多态”。多态也是面向对象程序设计和设计模式的基础,很值得学习。接口的好处就是可以分离调用和实现,降低代码的耦合度,提高代码的可扩展性和可维护性。并不是所有语言的都有接口和多态的概念。主流的面向对象语言都支持多态,Java和C#有interface关键字以允许一个类型实现多个接口,早期C++没有interface关键字(但可以通过宏和纯虚函数变通一下)。动态语言可以变相实现多态,从而间接的实现接口。支持函数指针和中断的语言(如C或者汇编)也可以变相实现接口和多态。其他的语言实现接口比较吃力。
      

  7.   

    套用一下现在比较火滴“草地哥”你就明白了草地哥说:“俺是农民不假,但是农民不妨碍我唱歌,我就喜欢唱歌”class 草地哥:农民,I歌手

     
    }而“唱响激情”说,俺是选秀节目,俺要的是实现了“i歌手”接口的人,崩管你是不是农民,只有你会唱歌就成,俺们只调用实现了“I歌手”天赋的人
      

  8.   

    协议,未雨绸缪的商定吧。
    契约精神是USA的特权,咱们国家不将那个鬼东西。
      

  9.   

    接口 对象名 = new 实现接口的类();向上引用····