我是Java新手(整整一年!)
我的问题是我如何在接口中编写set/get方法和静态字段,并在另一个类中实现它.
我的代码是这样的:(简短!)
public interface myInterface{
int number=0;
public int setNumber(int num);{
}
}
// my class
public void myClass extends JFrame implements myInterface{
...
public int setNumber(int num){
number=num; // Error! Why? What I do?
}
}
Run Code Online (Sandbox Code Playgroud)
在语句中number=num它有错误,但它在setName方法中没有错误!
Mat*_*eid 18
你不能在接口中定义实例字段(它们是常量 - static final值,感谢Jon,因为它们只是实现的一部分.因此,只有getter和setter在接口中,而字段出现在实现中.
并且setNumber应该返回void而不是int.为了得到我建议你添加int getNumber().
public interface MyInterface {
void setNumber(int num); // public is implicit in interfaces
int getNumber(); // obviously
}
public class MyClass implements MyInterface {
private int number = 0;
public void setNumber(int num) { this.number = num; }
public int getNumber() { return this.number; }
}
Run Code Online (Sandbox Code Playgroud)
如你所见,只是其中setNumber的一部分MyInterface.消费者不需要知道数字的存储方式,因此它是一个实现细节.
此外,在Java中,您可以命名类和接口PascalCase而不是camelCase.
当您在接口中定义值时,它是隐式的,public static final 即它是不可变的而不是实例字段.
接口用于定义合同,而不是行为,因此坚持所有实现都具有此字段是没有意义的.
顺便说一下,如果你有一个abstract class或多个,你可以做到这一点interface