这听起来像是一个菜鸟问题,但是我正在搜索什么是接口,我找到了这个示例。

这有什么区别

interface InterfaceA
{
     void interfaceMethodA();
}


public class ImplementingClassA
    implements InterfaceA
{
    public void interfaceMethodA()
    {
        System.out.println("interfaceA, interfaceMethodA, implementation A");
    }
}

除了这个。

public class ImplementingClassA
{
    public void interfaceMethodA()
    {
        System.out.println("interfaceA, interfaceMethodA, implementation A");
    }
}

我没有发现任何区别,如果是的话,这些接口的用途是什么?

===============>>#1 票数:1 已采纳

当您有多个需要执行相同操作的类,但每个操作将稍有不同甚至什至非常不同时,则需要一个接口。 例如,假设您要某些食物可食用。 如果您继承一种饮食方式,则必须以完全相同的方式食用所有食物。 这就是为什么您使用像这样的界面的原因...

   interface Iedible {
    public void eat();
    }

因此,根据定义,如果某种东西实现可食用,我知道您可以食用它,但是如何食用它的行为可能有所不同。 例如汤,您将不得不在要咬蛋糕的地方饮。

在这种情况下,我们有一个cookie,我们都知道cookie中只有5位。

 public static class Cookie implements Iedible {
    int bites = 5;

    public void eat() {
        if (bites > 0) System.out.println("*bites cookie* you have only " + --bites + " bites left");
        else System.out.println("no more cookie left :(");
    }
    }

现在我们有了蔬菜,而且我们知道您永远不会用完蔬菜,因为您被咬的东西很小。

   public static class Vegetable implements Iedible {
    public void eat() {
        System.out.println("Everyone knows vegetables are not edible but you try to eat it anyway *takes a microscopic bite*");
    }
    }

因此,我们看到Cookie和Vegetables都可以使用eat(),但是这些eat()动作的实现方式根本不同。

现在这里是界面真正发光的地方。 现在,我需要一个名为Dinner的类,该类可以接受可以吃的任何对象,然后我想要一个方法,该方法可以让我在餐桌上尝试所有东西。

public static class Dinner {
ArrayList<Iedible> foods = new ArrayList<Iedible>();

public Dinner(Iedible... food) {
    for (int i = food.length - 1; i >= 0; i--)
    foods.add(food[i]);
}

public void tryEverything() {
    for (int i = foods.size() - 1; i >= 0; i--)
    foods.get(i).eat();
}
}

在上面的示例中,您仅向两个类提供了相同的方法,因此您将无法在没有接口的情况下制作晚餐类,因为仅因为两个类具有相同的方法,否则编译器将不知道,除非您实现接口。

当然,这是我们的操作界面...

public static void main(String[] args) {
Cookie cookie = new Cookie();
Vegetable vegetable = new Vegetable();
Dinner dinner = new Dinner(cookie, vegetable);
dinner.tryEverything();
}

我希望这可以帮助您获得一些接口的实用思想,并理解上面给出的示例如果没有接口就无法复制。

===============>>#2 票数:0

首先,它是合同的一部分,请考虑该接口的另一种实现-

public class ImplementingClassB
    implements InterfaceA
{
    public void interfaceMethodA()
    {
      System.out.println("interfaceA, interfaceMethodA, implementation B");
    }
}

现在你可以使用

InterfaceA foo = new ImplementingClassA();
InterfaceA bar = new ImplementingClassB();

foo.interfaceMethodA();
// and/or
bar.interfaceMethodA();

  ask by Zaphyk translate from so

未解决问题?本站智能推荐:

3回复

使用Java接口

我需要创建接口MultiLingual,该接口允许以不同的语言显示对象的数据(不是数据本身,而是诸如“作者”,“标题”之类的介绍)。 打印的数据如下所示: 测试代码如下: 所以我需要在MultiLingual接口中引入常量ENG,PL以及方法get(int language
3回复

在Java中使用接口

好吧,我有一个相当简单的问题,我似乎无法找到解决方法…… 对于一个类,我必须为具有以下方法的二叉树实现一个接口: 我们需要有一个名为MyNode.java的类,这是我用来制作树的类。 因此,列出所有我认为我会这样做的孩子: 做些像生孩子的事情 所以我的问题是:我会
4回复

Java使用接口作为回调

我试图通过具有类实现和接口来实现回调过程,然后将该类作为对象(接口)传递给另一个类。 但是,我收到错误:“构造函数ClassB(TestMe)未定义”。 我以为我正确地做到了这一点,我不知道我做错了什么。 有人可以提供一些建议吗? 我的代码如下: 我有一个界面: 我有一个实
1回复

Java接口及其在Collection中的使用

这个问题已经在这里有了答案: List <Dog>是List <Animal>的子类吗? 为什么Java泛型不是隐式多态的? 16个答案 我正在开发Java库,需要创建一个返回Set<A>的方法,其中A是接口,而B imple
3回复

从未使用过的Java接口方法

因此,前一段时间我开始在Java中使用接口 。 我已经创建了一个,我有一个类 实现该接口。 所以这是接口本身: 这是实现Actor接口的类: 但是,如您在第一张图片中所看到的,没有使用create()的方法 。 最奇怪的是,一切正常! 只有这些带下划线的字眼让我有点害
4回复

Java使用可比较的接口

我正在做一个关于实现接口的家庭作业,并且有点迷失。 我需要实现类似的接口并使用compareTo()方法。 这是我的超级类的代码,它有三个子类,它们都是不同形式的车辆。 在这种情况下,我试图将它们拥有的门数量计算在内。 下面是“Vehicle”超类的代码 目前这是一项正在进行
3回复

在Java类中使用接口

我正在努力用Java解决一些问题。 如何使用方法GiveCode()返回对象的整数值。 这是由我们的讲师预先编写的代码,我们必须使用它为对象返回一个整数值,该值将在为哈希表创建哈希值时使用。 HashCode.java StringHashCode.java(我创建了此类,因为
1回复

使用Singleton和接口Java

我想知道,如何使用带有接口的单例模式? 我创建了一个界面: 我做了这个实现: 如何从我的主类访问getInstance? 我尝试了一些想法 (不起作用 - BuisinessServiceImpl()的构造函数是私有的) 但还有什么? 你能帮我吗? 编辑
2回复

Java - 使用带接口的Hashtable作为值

我有一个接口IMyInterface。 一组实现此接口的类:Class1,Class2 ...... 现在我想创建一个Hashtable来存储任何实现IMyInterface的类。 编译器抱怨它无法填充ht并且它无法添加Class1,因为没有定义add方法这样做。 添加方法期望
3回复

使用接口的Java通用方法

我试图了解泛型和接口,并且遇到了以下代码: 我知道方法fDouble返回输入整数的双精度数,但是,我不明白怎么有一个;。 }之后,以及如何声明方法