我可以在没有实现接口的情况下调用接口内部的方法吗?

我可以在界面内调用方法而不在我的类中实现接口吗?

package; import Contact; public interface IPerson{ public void savePerson(Contact contact); } 

现在这里的一些课……

 public class HulkHogan { //Calling the method savePerson here //I dont want to implement the Interface in all. } 

静态地,您可以声明它被调用。 您不必在调用类中实现接口。 例如:

 public class HulkHogan { private IPerson person; public HulkHogan(IPerson person){ this.person = person; } public void doSomething(Contant contact){ //call your method here person.savePerson(contact); } } 

但是为了执行它,你需要在某个地方实现它,因为接口只是描述某些行为的行为但不提供实际的行为(即不实现它)。

你可以这样:

 Person p = new IPerson{ public void savePerson(Contact contact) { // some code } } 

现在在p上调用savePerson 。 您正在实现IPerson而不创建单独的类。

你不能因为该方法不包含定义(方法体)。 接口的目的是在某处实现它,以便您拥有此方法的实际实现。

不,你不能…… bcoz类接口的所有方法都是抽象的……你不能在没有实现类的情况下使用它们…

不,你不能称之为,你必须至少提供它的实现

除了调用方法,您还需要一个对象。 如果没有提供实现, 您无法实例化接口

接口只是没有实现的方法的定义。 如果你没有实施这些方法,你打电话时他们会做什么?

另一方面,接口不一定由调用类实现。 所以在你的情况下,HulkHogan可以调用另一个对象的savePerson()方法,而不需要自己实现它。 但有些class级必须在某个地方实施它才能做某事。

除非您implement接口或具有implement接口的类的成员对象,否则您不能使用savePerson方法,因为根据定义它还没有实现。

您必须在作为接口实例的对象上调用它,因此HulkHogan必须实现IPerson或者必须提供实现IPerson的实例(或者在其中实例化,尽管这不是首选) HulkHogan

更重要的是(也基于您之前的问题),您希望通过调用没有实现的方法来实现什么?

接口的目标是为已知类型的对象强制要求特定的和众所周知的合同。 例如,按照惯例,所有Stack都有push(),pop()和peek()。 因此,通过编写接口,您明确地写了一个合同,任何编写堆栈的人都应该遵循。

换句话说,它是一个模板,它规定任何自称为Stack的类必须实现名为push(),pop()和peek()的方法,如我在此讨论的例子。

 public interface StackInterface { public void push(int x); public int pop(); public void peek(); } public class myStack implements StackInterface{ } 

这是一种面向对象的技术。 此时您将无法获得编译,因为您至少没有实现接口方法的方法。 在完全使用该接口之前,您需要编写与接口签名匹配的方法。

当你说你正在为一个类实现一个接口时,你实际上意味着你正在遵守接口中定义的合同(或一个学科),也就是你将在接口中给出方法的定义,所以只是觉得那个接口是一个包含规则的容器,

你说你想在接口中调用方法:这本身并不是一个只是规则定义的方法,所以关键是调用一个没有主体的方法(实际上它本身不是一个方法)

…请享用

您可以创建一个代理,它不会模拟对接口的调用。 但是,这有效地动态创建了一个实现 你无法避免提供某种实现。

 public class HulkHogan { private IPerson person; public void setContactM(IPerson person) { this.person= person; } public void doSomething(Contact contact) { person.savePerson(contact); } } 

希望savePerson方法在实现它的其他类中的某个地方有一些定义。 通过这种方式,您可以在界面中调用方法。

如果方法没有实现的主体,则无法调用该方法。 实施课将为您提供所需的身体。 在Java 8中,您可以在接口本身内部实现方法体,并使用静态访问修饰符。 在这种情况下,您只需要导入当前类中的接口(如果它位于不同的包中),然后您可以直接调用该方法。