我有以下口在Java

public interface IFoo
{
    public abstract void foo();
    public void bar();
}

之间的区别是什么foo()and bar()?当我应该使用抽象?

两者似乎完成我想要什么除非我失去了一些东西微妙?

更新 重复的 为什么一个声明Java口的方法以抽象?

有帮助吗?

解决方案

这里没有任何功能上的差异。没有实现在一个Java接口曾经设置所有方法声明是隐式抽象。

请参阅[1]: HTTP://java.sun的.com /文档/书籍/教程/ JAVA / IandI / abstract.html

一个直接引用形成上述:

  

注意:所有的接口中的方法(参见接口部分)是隐含抽象,所以抽象改性剂不与接口方法中使用的(也可能是-它只是没有必要)

其他提示

接口方法都是publicabstract默认。有foo()bar()之间没有区别,你可以安全地删除所有publicabstract关键字。

您不会错过任何东西。从 Java语言规范

  

在身体的每个方法声明   的接口是隐式   抽象的,所以它的身体始终   用分号,而不是表示   块。

     

在身体的每个方法声明   接口的是隐式公开的。

换句话说,可以省略public以及在界面方法中的abstract

这是多余的(没有区别两个声明),并明确劝阻在 第9.4 Java语言规范:

兼容性更旧的版本 Java平台,这是允许的 但不鼓励,作为一项风格, 于冗余地指定的抽象 修改方法的声明 接口。

public 同样是不必要和气馁:

这是允许的,但强烈建议不要作为一个论的风格,对冗余的指定 公共修用于接口的方法。

我不知道为什么 public强烈 沮丧但是 abstract 只是沮丧...

两者完成相同的,因为在一个接口的所有方法都是抽象的。

abstract在这种情况下是不必要的(如被标记在作为public接口的方法)。

您会代替上的方法在一个抽象类,以便使用此由子类执行其覆盖。

有没有都声明之间的差异。从概念上讲,在一个接口的所有方法都是抽象的。

这没有什么区别。在一个Java接口所有的方法都是始终抽象。

请参阅第一个音符在此链接: http://java.sun.com/docs/books/教程/ JAVA / IandI / abstract.html

两者FOO()和bar()是抽象的,因为它们是在接口内声明。你在这里使用的抽象词是没有意义的 - 你最好将其删除

在Java接口是相等的“某种方式”到完全抽象的类,因此加入“抽象”的关键字的方法声明中的接口无关与方法!

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top