java - Java 接口(interface)有什么意义?

标签 java interface

在我从头开始构建的所有新应用程序中,我从未见过对界面的需求,我过去读过文本,但随后忽略并忘记了真正的需求。

也就是说,这是我过去见过的一个问题,我将用它来举例问这个特定的问题......

假设我有这个界面:

public interface IBox
{
    public void setSize(int size);
    public int getSize();
    public int getArea();
    //...and so on
}

我有一个实现它的类:

public class Rectangle implements IBox
{
    private int size;
    //Methods here
}

使用如下:

public static void main(String args[])
{
    Rectangle myBox=new Rectangle();
    // do stuff.
    System.out.println( myBox.getSize() );
}

鉴于我仍然需要在 Rectangle 类中编写 setSize getSize getArea 方法。 鉴于具有这些方法的 Rectangle,即使没有 IBox 接口(interface)也仍然可以工作。

除了公开、指示或描述 setSize getSize getArea 方法之外,拥有 Ibox 接口(interface)还有什么意义?

最佳答案

好吧,我们先不直接回答。假设我们有一个静态方法 scaleBox() ,它接受一个盒子并对其进行缩放。显然 HexagonalBox 不会扩展 Rectangle。我们需要一个 scaleBox(HexagonalBox h) 和一个 scaleBox(Rectangle r)。我们可以让这两个盒子都实现 IBox 并拥有一个方法,scaleBox(IBox box)。该方法保证有 setSize()

由于接口(interface)是一种类型,因此您可以让许多互不扩展的类实现该接口(interface),并安全地传递(因为它们保证遵守接受接口(interface)作为参数时所期望的约定)

在明年 JDK 8 的相关说明中,您需要专门设计的接口(interface)才能在新版本中使用 lambda 功能。

关于java - Java 接口(interface)有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18836083/

相关文章:

java - 如何在现有 JfreeChart 上方绘制蜘蛛图

java - 循环遍历 FXML 元素并将其中一些元素添加到列表时遇到问题

android - DialogFragment 使用接口(interface)回调到 Target Fragment

c# - 如何将方法返回的接口(interface)变量转换为对象?

java - 存储在 List 变量中的 ArrayList 对象

java - 使用 newOutputStream 方法定义文件位置

java - 为大型数据集运行 MapReduce 代码时出现 Java 堆空间错误

java - java 如何在 32 位架构中处理 long 和 double

node.js - 向 Node.js 中的嵌套接口(interface)添加属性

delphi - 我不知道是否需要或如何实现接口(interface)的这 3 个基本方法