Java 接口能否禁止具有特定数据类型的对象?

Java 接口能否禁止具有特定数据类型的对象?,java,interface,Java,Interface,接口可以强制类重写特定方法。它还能强制类包含特定变量吗?也就是说,实现实体的类必须包含布尔活动?如果您正在寻找要附加到接口的变量(属性),实现这一点的方法是创建一个实现所述接口的抽象类,并在抽象类本身中定义变量 如下图所示 abstract class implements theInterface { public String variable; } 如果您正在寻找要附加到接口的变量(属性),实现这一点的方法是创建一个实现所述接口的抽象类,并在抽象类本身中定义变量 如下图所示 ab

接口可以强制类重写特定方法。它还能强制类包含特定变量吗?也就是说,
实现实体
的类必须包含
布尔活动

如果您正在寻找要附加到接口的变量(属性),实现这一点的方法是创建一个实现所述接口的抽象类,并在抽象类本身中定义变量

如下图所示

abstract class implements theInterface {
    public String variable;
}

如果您正在寻找要附加到接口的变量(属性),实现这一点的方法是创建一个实现所述接口的抽象类,并在抽象类本身中定义变量

如下图所示

abstract class implements theInterface {
    public String variable;
}

不,但是您可以通过要求类具有getter和setter来实现几乎相同的功能,对于类的外部用户可以假定为
boolean alive
变量的对象

以代码形式:

public interface MortalEntity {
    boolean isAlive();
    void setIsAlive();
    void setIsNotAlive();
    // alternative setter (less readable IMO)
    // void setIsAlive(boolean isAlive);
}

从某种意义上说,这是一个更好的选择,因为最终可能会有一个更复杂的实现,其中单个
isAlive
变量不再足够。那么,对精确变量的要求就变得不方便了。

不,但是您可以通过要求类具有getter和setter来实现几乎相同的目的,因为类的外部用户可以假定这些变量是
布尔活动的
变量

以代码形式:

public interface MortalEntity {
    boolean isAlive();
    void setIsAlive();
    void setIsNotAlive();
    // alternative setter (less readable IMO)
    // void setIsAlive(boolean isAlive);
}

从某种意义上说,这是一个更好的选择,因为最终可能会有一个更复杂的实现,其中单个
isAlive
变量不再足够。那么,对精确变量的要求将变得不方便。

接口定义行为,而不是那些行为的实现,后者由实现类来定义。Java8确实允许在某些条件下在接口中使用方法,但这仍然不是变量状态,只是behavior.no。最接近的方法是创建包含布尔变量的方法。像
isAlive()
接口定义行为,而不是那些行为的实现,后者由实现类来定义。Java8确实允许在某些条件下在接口中使用方法,但这仍然不是变量状态,只是behavior.no。最接近的方法是创建包含布尔变量的方法。像
isAlive()
我明白了。我希望避免使用抽象类,尽管似乎没有太多其他好的选择。我很关心可读性和可维护性,所以我试着将代码库划分得很细。我希望避免使用抽象类,尽管似乎没有太多其他好的选择。我关心的是可读性和可维护性,所以我试图使我的代码库保持相当的条块化。