我对java很陌生,试图理解interface.Making --一个没有方法的接口给出编译时间-- error.What是造成这种行为的原因吗?
import java.io.*;
interface A{
int x=10;
}
class B implements A{
System.out.print("i am in B and x is"+x);
}
class InterfaceEx{
public static void main(String[] args) {
A a;
a=new B();
}
}发布于 2013-11-04 18:19:41
是的,没有Java方法的接口是可能的。实际上,Serializable和Cloneable接口是内置于Java的,没有任何方法。它们被称为“标记”接口。
引用维基百科页面上的标记界面的话
虽然典型的接口指定实现类必须支持的功能(以方法声明的形式),但是标记接口不需要支持。仅仅存在这样一个接口就表明了实现类的特定行为。
至于为什么您的B接口没有编译(既然您已经提供了代码),您需要将语句放在方法或构造函数中,例如:
class B implements A{
public B() {
System.out.print("I am in B and x is"+x);
}
}发布于 2013-11-04 18:23:15
是。java.io.Serializable接口就是这种标记接口的例子。
发布于 2013-11-04 18:23:28
根据java语言规范
接口的主体可以声明接口的成员,即字段(§9.3)、方法(§9.4)、类(§9.5)和接口(§9.5)。
它并没有说你必须这么做,所以你可以有空的接口。
从上面的答案来看,有空的接口
https://stackoverflow.com/questions/19774334
复制相似问题