我制作了一个名为 Polygon 的 java 接口(interface),它包含各种抽象方法,如 getArea()
和 getNVertices()
。它将由 Triangle、Quadrilateral 等子类实现,这些子类又被扩展(例如,Quadrilateral 由 Rectangle 扩展)。
现在每个多边形将由多个顶点定义(我将它们放在一个顶点数组中,其中包含 x 和 y 坐标)。由于每个 Polygon 都会使用这个数组,我想知道: 是否可以在 Polygon 接口(interface)中定义一个 Vertex 数组?我该怎么做?
最佳答案
这种情况下的常见做法是同时编写接口(interface)和抽象类。
接口(interface)定义了多边形的契约,而抽象类包含默认实现 - 它可以包括顶点数组等属性,以及任何您想要默认实现的方法。
所以你会有这样的东西:
public interface Polygon { ... }
在另一个文件中
public abstract class BasePolygonImpl implements Polygon {
protected Vertex[] vertices;
// ...
}
这样做的原因是,如果一个人想创建一个以不同方式实现的多边形(例如,有一个顶点链表或将其顶点保存在数据库中),他们可以创建一个类来实现Polygon
并忽略 BasePolygonImpl
类。
但是如果他们想要实现一个扩展而不是替换默认实现的多边形,他们可以决定使用 BasePolygonImpl
作为他们的父类(super class),从而避免重复基本实现。
需要注意的重点是接口(interface)不定义实现,因此不能包含常量以外的字段。只有类才能定义实现。
关于java - java接口(interface)中的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30379023/