接口的要点是指定公共API.接口没有状态.您创建的任何变量都是常量(因此请注意在接口中创建可变对象).
基本上,接口说这里是实现它的类必须支持的所有方法.如果Java的创建者不允许在接口中使用常量,那么可能会更好,但是现在为时已晚(并且在某些情况下常量在接口中是合理的).
因为您只是指定必须实现哪些方法,所以不知道状态(没有实例变量).如果要要求每个类都有一个特定的变量,则需要使用抽象类.
最后,一般来说,您应该不使用公共变量,因此将变量放入接口的想法一开始就是一个坏主意.
简短的回答 – 你不能做你想要的,因为它在Java中是“错误的”.
编辑:
class Tile
implements Rectangle
{
private int height;
private int width;
@Override
public int getHeight() {
return height;
}
@Override
public int getWidth() {
return width;
}
@Override
public void setHeight(int h) {
height = h;
}
@Override
public void setWidth(int w) {
width = w;
}
}
替代版本将是:
abstract class AbstractRectangle
implements Rectangle
{
private int height;
private int width;
@Override
public int getHeight() {
return height;
}
@Override
public int getWidth() {
return width;
}
@Override
public void setHeight(int h) {
height = h;
}
@Override
public void setWidth(int w) {
width = w;
}
}
class Tile
extends AbstractRectangle
{
}