java - java接口(interface)中的变量

标签 java variables interface

我制作了一个名为 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/

相关文章:

java - 如何获取存储在集合中的对象的特定方法?

java - 无法访问匿名嵌套子类的成员(实现接口(interface))

java - JDialog 中的 JTable

java - 如何将后续字符串发送到数据库?

java - 使用 jpql 和 jpa 从日期字段中提取年份

variables - 是否可以组合 Ansible 中单独的 vars 文件中提到的相同变量名的值

pointers - Golang返回指向接口(interface)的指针抛出错误

java - 什么时候 1 个线程比同时运行的多个线程运行得更快

ios - 在 viewDidLoad 之外时自定义类对象为 NULL?

java - 为什么我得到 null 作为字符串输出?