关于oop:Java界面查询

Java interface inquiry

我是Java/Android的新手,我有一些C++C/C OOP的背景,我真的只是想更好地理解界面。从我收集到的,它们基本上就像你在C++中声明的原型一样。这完全正确吗?或者有更好的理解方法吗?


接口是表示每个类都可以实现的契约的概念。这个概念与允许在面向对象的展示中编码的任何特定语言无关。

C++

1
2
3
4
5
__interface IMyInterface
{
    virtual HRESULT M1() = 0;   // pure virtual
    HRESULT M2();           // also pure virtual
}

或者也可以使用该结构

C.*

1
2
3
4
   interface IMyInterface {
       Hresult M1();
       Hresult M2();
   }

爪哇

1
2
3
4
   interface IMyInterface {
       Hresult M1();
       Hresult M2();
   }

在Java语言中实现一个接口,必须在关键字EDCOX1、0和枚举后将其枚举到它的主体中,如果类没有标记为抽象的话。另外,从1.6版开始,一个好的实践是使用注释EDOCX1(about),通知编译器注释方法是一些抽象元素的一部分。

1
2
3
4
5
6
7
8
9
10
11
12
13
  class MyClass implements IMyInterface {

        @Override
        public Hresult M1() {
           return null;
        }

        @Override
        Hresult M2() {
            return null;
        }

  }

Oracle界面教程

最后,要回答你的问题,来自C的原型是否与Java中的接口相同。我们可以说,它们可以用来在代码中获得某种抽象级别,在这个级别上是相同的。


接口是您指定用来帮助与您的"客户"进行通信的契约。客户机是其他需要使用您的类而实际上不知道它们如何在内部工作的类。

然后,您创建不同的实现(或者如果您愿意,只创建一个),这些实现必须绝对尊重其他所有人都同意的合同。

作为一个小团队中的开发人员,首先定义所有接口,然后在没有完成类的情况下使用它们,这真的很有帮助。

所以是的,它们很像C中的原型,至少这就是我自己使用原型的原因。


把它想象成一个只有纯虚拟方法的类。

在C++中:

1
2
3
4
class ISomething {
    public:
        virtual void f() = 0;
};

在爪哇/ C:

1
2
3
public interface ISomething {
    /* public */ void f(); // everything is virtual in Java
}