在爪哇,当我应该用一个抽象的方法中的一个接口?
-
18-09-2019 - |
题
我有以下口在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
一个直接引用形成上述:
注意:所有的接口中的方法(参见接口部分)是隐含抽象,所以抽象改性剂不与接口方法中使用的(也可能是-它只是没有必要)
。
其他提示
接口方法都是public
和abstract
默认。有foo()
和bar()
之间没有区别,你可以安全地删除所有public
和abstract
关键字。
您不会错过任何东西。从 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接口是相等的“某种方式”到完全抽象的类,因此加入“抽象”的关键字的方法声明中的接口无关与方法!