【问题标题】:What is a class interface?什么是类接口?
【发布时间】:2010-11-04 13:21:28
【问题描述】:

我目前正在完成代码完成工作,并且不断弹出“界面”一词!我试图弄清楚接口是什么。你能定义这个词吗?还有什么实际上构成了“类接口”?

【问题讨论】:

标签: language-agnostic interface duplicates


【解决方案1】:

我认为定义接口的好方法如下

接口是指定一组方法、字段和属性的契约,这些方法、字段和属性可用于任何实现对象

不同语言的实际实现可能有一些有趣的小差异,但原则是成立的。

我考虑将已实现的接口添加到上面的列表中,但因为它似乎有点过于特定于语言而放弃了它。我认为这没关系,因为最终效果几乎相同。添加更多接口只是在合约中添加更多方法、字段和属性。

【讨论】:

    【解决方案2】:

    一般来说,接口就是“类对世界其他地方的看法”。

    例如Java中的这个类:

    class MyClass {
      private string data;
      private string Foo() {...}
      public void Bar(string s){...}
    }
    

    可以说它的界面中只有Bar功能。在内部它还有一些其他成员,但它们是私有的,因此它们对外部世界不可见。

    更常见的是,接口也是语言中的特定类型,例如下面MyClass实现了IMyClass接口:

    interface IMyClass {
      public void Bar(string s);
    }
    
    class MyClass implements IMyClass {
      private string data;
      private string Foo() {...}
      public void Bar(string s){...}
    }
    

    接口现在用代码表示,因此任何时候需要 IMyClass 类型的变量,都可以使用 MyClass 类型的对象,因为它实现了正确的接口。

    【讨论】:

      【解决方案3】:

      类的接口是其他类可以看到的“公众面孔”。它将类的实现与它与其他类交互的方式分开。这样就可以换出不同的实现,而其他类不需要知道接口背后的任何内容。

      一个接口可以同时包含数据和函数成员。

      【讨论】:

        【解决方案4】:

        它是世界的外在。通常是它公开的一组公共方法(成员)。

        从技术上讲,它们是两种不同的东西

        接口将是一个公共合同。例如

        interface ILogger
        {
          void Log(String str);
        }
        

        然后一个类会“实现”这个接口——在某种程度上说它提供了这个功能

        class ConsoleLogger : ILogger
        {
          public ConsoleLogger() { ... }
          public void Log(String str)
          {
            Console.WriteLine("Console Logger " + str);
          }
          // private stuff
        }
        

        此服务/接口的用户不必关心它是如何实现的或谁在实现它?通过依赖一个接口,可以随意切换实际的实现。

        【讨论】:

          【解决方案5】:

          接口是类可以实现的一组方法的定义。主要用于接口多态。

          【讨论】:

            【解决方案6】:

            接口就像一个类,但又不完全一样。它具有类似于类的特征,但它不是接口。接口具有变量和方法,“就像类一样,但接口中声明的方法默认是抽象的(只有方法签名,没有主体)”。

            http://beginnersbook.com/2013/05/java-interface/

            【讨论】:

              【解决方案7】:

              接口有两个定义。这取决于术语接口在什么上下文中使用。

              1. 类接口是指类的所有实现的公共方法。
              2. 作为类型的接口。即使用关键字interface来声明一个接口。

                interface Movable{ 
                    moveStraight();
                    moveLeft();
                    moveRight();
                    stop();
                }
                

                所以现在一个类,比方说,Car 可以实现接口 Movable。这就是所谓的合同。如果 Car 类实现了 Movable 接口,Car 保证为 Movables 中声明的所有方法提供实现 声明。

              总而言之,通常在特定语言的编程上下文中将接口作为类型(定义 2)来寻址。通常在理论或设计环境中,您会在较少的情况下找到第一个定义。

              【讨论】:

                【解决方案8】:

                接口的经典现实生活示例是控制汽车。

                休息、加油和车轮将是界面。 发动机和其他机械方面将是实施。 这些机械方面可以改变,我们不知道,因为我们的界面保持不变。

                这是接口的力量,它隐藏了实现细节,因此我们可以在更高层次的抽象上工作。我们通常可以直接使用接口的功能,而不必担心它下面的代码是如何实现的。

                【讨论】:

                  猜你喜欢
                  • 2011-07-07
                  • 2021-11-02
                  • 2011-06-06
                  • 1970-01-01
                  • 1970-01-01
                  • 2011-10-28
                  • 2011-02-06
                  • 2019-12-23
                  • 2011-01-03
                  相关资源
                  最近更新 更多