我是Java/Android的新手,我有一些C++C/C OOP的背景,我真的只是想更好地理解界面。从我收集到的,它们基本上就像你在C++中声明的原型一样。这完全正确吗?或者有更好的理解方法吗?
C不也有接口吗?
是的,但是还没有学会。(还是个学生)。
如果你真的理解什么是原型,什么是接口,那么你可能知道Thery是不同的。
关于这个问题已经有很多好的(回答的)问题了。这一个(stackoverflow.com/questions/11945993/…)有一些很好的答案,并且引用了同一类型的其他问题。
不,它们甚至不相似。
人们在回答这个问题时忘记的是,一个类可以实现多个接口,并且两个或多个接口可以使用相同的名称但不同的参数,甚至可以抛出不同的异常,实现这些接口的类必须实现所有接口及其方法。
属于programmer.stackexchange.com
接口是表示每个类都可以实现的契约的概念。这个概念与允许在面向对象的展示中编码的任何特定语言无关。
C++
__interface IMyInterface
{
virtual HRESULT M1() = 0; // pure virtual
HRESULT M2(); // also pure virtual
}
或者也可以使用该结构
C.*
interface IMyInterface {
Hresult M1();
Hresult M2();
}
爪哇
interface IMyInterface {
Hresult M1();
Hresult M2();
}
在Java语言中实现一个接口,必须在关键字EDCOX1、0和枚举后将其枚举到它的主体中,如果类没有标记为抽象的话。另外,从1.6版开始,一个好的实践是使用注释EDOCX1(about),通知编译器注释方法是一些抽象元素的一部分。
class MyClass implements IMyInterface {
@Override
public Hresult M1() {
return null;
}
@Override
Hresult M2() {
return null;
}
}
Oracle界面教程
最后,要回答你的问题,来自C的原型是否与Java中的接口相同。我们可以说,它们可以用来在代码中获得某种抽象级别,在这个级别上是相同的。
如果我能查一下你的答案,我会(还没有足够的代表)谢谢你,先生。
您只能检查一个问题的答案。但总是可以投票。但重要的是你找到了答案。祝你好运。
我没有足够的代表来投票(否则我会投票)
接口是您指定用来帮助与您的"客户"进行通信的契约。客户机是其他需要使用您的类而实际上不知道它们如何在内部工作的类。
然后,您创建不同的实现(或者如果您愿意,只创建一个),这些实现必须绝对尊重其他所有人都同意的合同。
作为一个小团队中的开发人员,首先定义所有接口,然后在没有完成类的情况下使用它们,这真的很有帮助。
所以是的,它们很像C中的原型,至少这就是我自己使用原型的原因。
把它想象成一个只有纯虚拟方法的类。
在C++中:
class ISomething {
public:
virtual void f() = 0;
};
在爪哇/ C:
public interface ISomething {
/* public */ void f(); // everything is virtual in Java
}
你的C++代码会有一个;在最后一个'}'之后(因为它将在头文件中)。
对不起,我的C++有点生锈(例如我不知道扩展接口),我一直在思考:StAdvOx.com /问题/ 318064 / & Helip;