Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java接口内设置内容_Java_Oop - Fatal编程技术网

在Java接口内设置内容

在Java接口内设置内容,java,oop,Java,Oop,我只是在学习这个界面,现在我面临着如何在界面内提供内容的问题 我读了这篇文章 它的内容让我想到了一些事情——当他在里面使用界面时 public interface SlotListener { void hasChanged(Slot slot); } 他也创造了这个 private void notifyListeners() { for (SlotListener slotListener : slotListeners) { slotListener.hasC

我只是在学习这个界面,现在我面临着如何在界面内提供内容的问题

我读了这篇文章

它的内容让我想到了一些事情——当他在里面使用界面时

public interface SlotListener {
void hasChanged(Slot slot);
} 
他也创造了这个

private void notifyListeners() {
    for (SlotListener slotListener : slotListeners) {
        slotListener.hasChanged(this);//this is Slot class
    }
}
如何为hasChanged()方法提供内容? 我真的不明白这个界面的意思。。。 我的意思是,hasChanged()中没有任何内容(当然是因为它是am接口),但为什么它指向Slot类?这种方法需要什么内容,如何使用

也许你需要看看上面关于这个问题的链接


我已经在谷歌上学习了界面,但我只找到了一些基本的教程,没有像这样的案例。我已经在一些社区询问过这个问题,但没有结果。

一个
接口
不是一个真正的类。它只是有一些方法签名。实类通过实现
接口
中的所有方法来实现
接口

SlotListener是一个接口。当您想要实现这个接口时,您应该创建一个具有
hasChanged(Slot-Slot)
方法的类

public class realClass implements SlotListener {
    public void hasChanged(Slot slot){
        //Some code here...
    }
}
有关接口的更多信息,请阅读。
这是观察者设计模式的典型案例。在这个设计模式中,您有一个监听器集合(您的SlotListener)和一个对象(您的Slot),当某些内容发生更改时,该对象将通知他的监听器。 Slot类还应该包含一个方法
addListener(SlotListener sl)
,该方法将向slotListeners列表中添加一个侦听器。 之后,您只需创建一个实现
SlotListener

public class MyListener implements SlotListener{
    void hasChanged(Slot slot){
        System.out.println("Slot " + slot.toString() + " has changed");
    }
}
请看这里:

当您创建一个接口时,您在其他地方有一个实现该接口的类。然后,实现类为接口方法提供具体的方法

查看类:它@Override并实现接口方法:

public class SlotActor extends ImageButton implements SlotListener {

   // some other code
   @Override
   public void hasChanged(Slot slot) {
       setStyle(createStyle(skin, slot));
   }
}

java接口必须由类实现。只需创建一个实现SlotListener接口的新类。然后,您的新类必须提供void hasChanged(槽);方法实现。是的,Slot类中有addlistener方法。所以现在我必须做的是在该方法中提供内容,在IPElement slot listener的另一个类中创建slot类的对象,然后从那里访问它?你说的“在该方法中提供内容”是什么意思?我的意思是内容是hasChanged()中的代码。我的意思是在Slot类中,方法slotListener.hasChanged(这个);调用(有一个像你说的addlistener),然后如果我想在这个slot类“hasChanged”内提供内容,我必须创建另一个实现slotlistener的类,然后在另一个类内创建slot对象,所以当我调用这个slot.addlistener()时,hasChanged inside slot将引用另一个类内的hasChanged。我说得对吗?我想你说的很复杂,但我明白:)试着用java做一个项目,使用这种模式或在互联网上搜索信息