Java接口示例

Java接口示例,java,Java,我目前正在学习更多关于Java的知识,在一本书中遇到了一个例子,我认为这让我误解了接口的使用。在我看来,所讨论的接口完全没有必要,我想知道我是否读错了,或者我应该去别处寻找更好的理解(我已经试过了,但并不真正理解) 界面: public interface Series{ int getNext(); void reset(); void setStart(int x); } 实现类: class ByTwos implements Series { int s

我目前正在学习更多关于Java的知识,在一本书中遇到了一个例子,我认为这让我误解了接口的使用。在我看来,所讨论的接口完全没有必要,我想知道我是否读错了,或者我应该去别处寻找更好的理解(我已经试过了,但并不真正理解)

界面:

public interface Series{
    int getNext();
    void reset();
    void setStart(int x);
}
实现类:

class ByTwos implements Series {
    int start;
    int val;

    By Twos() {
        start = 0;
        val = 0;
    }

    public int getNext(){
        val += 2;
        return val;
    }

    public void reset(){
        val = start;
    }

    public void setStart(int x){
        start = x;
        val = x;
    }
}
我不知道接口在这里有什么用途,为什么类不能简单地删除implements语句,以及接口真正的用途

编辑:与重复问题不同,因为我问的是这个特定的例子,这些问题的答案并没有帮助我真正理解这个概念。

TL;博士

  • 它定义了“什么”,即实现了什么
  • 它定义了“如何”,即如何实施
接口的主要目的是将实现与 定义并强制执行方法在没有 失败

假设你是一名经理,你决定程序员应该遵循一个模板,你可以使用界面。它就是这样做的,它提供了一个模板。 假设一个团队负责人想要强制实现某个功能,但不想更改管理者模板中的内容,他可以创建另一个界面。是的,通过接口可以实现多重继承

接口是类可以做什么的契约(或协议,或共同理解)。当一个类实现某个接口时,它承诺为接口中声明的所有抽象方法提供实现

它提供了抽象,您可以公开接口进行通信,我们可以从接口本身识别签名

它还提供了一种实现多态性的方法

参考:

    • TL;博士

      • 它定义了“什么”,即实现了什么
      • 它定义了“如何”,即如何实施
      接口的主要目的是将实现与 定义并强制执行方法在没有 失败

      假设你是一名经理,你决定程序员应该遵循一个模板,你可以使用界面。它就是这样做的,它提供了一个模板。 假设一个团队负责人想要强制实现某个功能,但不想更改管理者模板中的内容,他可以创建另一个界面。是的,通过接口可以实现多重继承

      接口是类可以做什么的契约(或协议,或共同理解)。当一个类实现某个接口时,它承诺为接口中声明的所有抽象方法提供实现

      它提供了抽象,您可以公开接口进行通信,我们可以从接口本身识别签名

      它还提供了一种实现多态性的方法

      参考:


      这意味着如果有人编写了一个方法,该方法接受一个
      Series
      作为参数,您可以将
      ByTwos
      的实例传递给它。
      Series s=new ByTwos()
      是一种可能的用法,但是如果需要添加
      ByThrees()
      ,该怎么办?然后(使用
      Series
      )只需更改为
      s=newbythrees()没有其他内容。。。没有界面,你必须改变更多的东西。如果这是一种
      getSeries()
      的方法呢?@khelwood啊,我不知道这是可能的。这让我对它的用处有了更多的了解。我想我现在明白了。本质上如此;接口是一种用于创建类的“模板”,它允许使用该模板创建的类更容易交换?这意味着如果有人编写了一个方法,该方法接受
      系列
      作为参数,您可以将
      ByTwos
      的实例传递给它。
      系列s=new ByTwos()
      是一种可能的用法,但是如果需要添加
      ByThrees()
      ,该怎么办?然后(使用
      Series
      )只需更改为
      s=newbythrees()没有其他内容。。。没有界面,你必须改变更多的东西。如果这是一种
      getSeries()
      的方法呢?@khelwood啊,我不知道这是可能的。这让我对它的用处有了更多的了解。我想我现在明白了。本质上如此;接口是一种用于创建类的“模板”,它允许使用该模板创建的类更容易交换?非常感谢,您的解释比我发现的其他地方容易得多(出于某种原因,也没有人使用“模板”这个词,现在似乎是准确描述它的最简单的术语)。也要感谢主要问题评论中的@JacksOnF1re。非常感谢,你的解释比我找到的其他地方容易多了(也因为某些原因,没有人使用“模板”这个词,现在似乎是最简单的术语来准确描述它)。还要感谢@JacksOnF1re在主要问题评论中的作用。