为什么当我点击实现方法时,接口(interface)中列出的变量没有显示在类中?我看了一下,但没有看到我真正寻找的答案,或者该变量更像是一个属性吗?
类(class):
public class TestInterface implements myInterable {
public TestInterface() {
}
public static void main(String[] args) {
}
@Override
public void method1() {
}
@Override
public void method2() {
}
}
interface myInterable {
public int score = 0;
public void method1();
public abstract void method2();
}
尝试了这段代码,但它不起作用。它几乎与列出的 Oracle 教程中的示例完全相同。
示例:
interface TimeClient {
void setTime(int hour, int minute, int second);
void setDate(int day, int month, int year);
void setDateAndTime(int day, int month, int year, int hour, int minute, int second);
void getLocalDateTime();
public static String getZoneId (String zoneString) { <-- Tutorial example
return "";
}
public default int getZonedDateTime(String zoneString) { <-- like the tutorial
return 0;
}
}
另一个例子:
Oracle 规定您不能创建接口(interface)的实例,但如果您的类实现了接口(interface),那么您可以通过创建对该类的新引用来创建接口(interface)的实例吗?你会这样看吗?这是通过使用接口(interface)创建类实例并将所有方法 stub 放入接口(interface)中的更好方法吗?然后,如果您添加新的接口(interface)方法,则不必因为一个原因而重写所有代码或两种新方法。
如果这是正确的,并且我想向我的应用程序添加一种新方法,如果我的变量使用这种类型的实例创建,我就不必遍历并重新编译每个类来添加一个新方法。
public class TestInterface implements myInterable,
Runnable,
MouseListener {
//Code goes here
}
public myInterable uu = new TestInterface(); <--This is the interface class
示例不起作用。
如果我使用类变量名称创建接口(interface)实例,这是否可行。
public class TestInterface implements myInterable,
Runnable,
MouseListener {
public myInterable uu = new TestInterface();
public TestInterface() {
}
public void method1() {
}
public void method2() {
}
public void run() {
System.out.println("Runnable");
}
@Override
public void mouseClicked(MouseEvent arg0) {
}
@Override
public void mouseEntered(MouseEvent arg0) {
}
@Override
public void mouseExited(MouseEvent arg0) {
}
@Override
public void mousePressed(MouseEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void mouseReleased(MouseEvent arg0) {
// TODO Auto-generated method stub
}
public static void main(String[] args) {
TestInterface b = new TestInterface();
b.run();
b.uu.run();
}
}
interface myInterable {
public int score = 0;
public void method1();
public abstract void method2();
public abstract void run();
// void method3() {
// int index = 0;
// for (index = 0; index < 10; index++) {
// }
// }
}
错误消息:
at DDHIntefaceExample.TestInterface.<init>(TestInterface.java:10)
at DDHIntefaceExample.TestInterface.<init>(TestInterface.java:10)
at DDHIntefaceExample.TestInterface.<init>(TestInterface.java:10)
at DDHIntefaceExample.TestInterface.<init>(TestInterface.java:10)
at DDHIntefaceExample.TestInterface.<init>(TestInterface.java:10)
at DDHIntefaceExample.TestInterface.<init>(TestInterface.java:10)
at DDHIntefaceExample.TestInterface.<init>(TestInterface.java:10)
at DDHIntefaceExample.TestInterface.<init>(TestInterface.java:10)
at DDHIntefaceExample.TestInterface.<init>(TestInterface.java:10)
at DDHIntefaceExample.TestInterface.<init>(TestInterface.java:10)
at DDHIntefaceExample.TestInterface.<init>(TestInterface.java:10)
at DDHIntefaceExample.TestInterface.<init>(TestInterface.java:10)
at DDHIntefaceExample.TestInterface.<init>(TestInterface.java:10)
at DDHIntefaceExample.TestInterface.<init>(TestInterface.java:10)
at DDHIntefaceExample.TestInterface.<init>(TestInterface.java:10)
at DDHIntefaceExample.TestInterface.<init>(TestInterface.java:10)
at DDHIntefaceExample.TestInterface.<init>(TestInterface.java:10)
at DDHIntefaceExample.TestInterface.<init>(TestInterface.java:10)
at DDHIntefaceExample.TestInterface.<init>(TestInterface.java:10)
at DDHIntefaceExample.TestInterface.<init>(TestInterface.java:10)
at DDHIntefaceExample.TestInterface.<init>(TestInterface.java:10)
at DDHIntefaceExample.TestInterface.<init>(TestInterface.java:10)
最佳答案
Every field declaration in the body of an interface is implicitly
public
,static
, andfinal
. It is permitted to redundantly specify any or all of these modifiers for such fields.
因此,示例中的字段 score
不会被继承,因为它是静态
。
关于java - 为什么接口(interface)中的变量没有出现在类实现中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21247902/