Ben*_*Ben 2 java oop methods interface class
如何在不抽象的接口中创建方法?我知道可以做到,我只是不知道如何做.
我举一个例子来说明我的困惑.在Java中,您可以实现java.awt.event.MouseListener,然后必须调用方法addMouseListener(Object)...将您的类作为参数传递,以便MouseListener知道要从中转换的对象.addMouseListener(Object)方法如何可能?
有人说我对匿名类使用非抽象方法的接口的方式感到困惑.如何在接口中实现匿名类,以便实现者可以调用其方法?我很新,在OOP仍然是'noob'.
如果您对匿名内部类感兴趣,它们的工作方式如下所示.
我们将继续使用MouseListener示例.
java.awt.event.MouseListener看起来像这样的界面:
public interface MouseListener {
void mouseClicked(MouseEvent e);
void mouseEntered(MouseEvent e);
void mouseExited(MouseEvent e);
void mousePressed(MouseEvent e);
void mouseReleased(MouseEvent e);
}
Run Code Online (Sandbox Code Playgroud)
在你的应用程序的某个地方你可能想要响应鼠标事件,所以使用匿名内部类你可以做这样的事情.
component.addMouseListener(new MouseListener() {
public void mouseClicked(MouseEvent e){/*implementation goes here...*/}
public void mouseEntered(MouseEvent e){/*implementation goes here...*/}
public void mouseExited(MouseEvent e){/*implementation goes here...*/}
public void mousePressed(MouseEvent e){/*implementation goes here...*/}
public void mouseReleased(MouseEvent e){/*implementation goes here...*/}
});
Run Code Online (Sandbox Code Playgroud)
你在这里所做的是创建一个实现MouseListener接口的新类(没有名称,因此是匿名的).如上所述,您没有在接口上创建非抽象方法.
您也可以创建一个新的命名类("命名类"表示常规旧类):
class MyMouseListener implements MouseListener {
public void mouseClicked(MouseEvent e){/*implementation goes here...*/}
public void mouseEntered(MouseEvent e){/*implementation goes here...*/}
public void mouseExited(MouseEvent e){/*implementation goes here...*/}
public void mousePressed(MouseEvent e){/*implementation goes here...*/}
public void mouseReleased(MouseEvent e){/*implementation goes here...*/}
}
Run Code Online (Sandbox Code Playgroud)
然后你会做的其他地方 component.addMouseListener(new MyMouseListener());
看到不同?
我希望这有帮助.祝好运.
PS - 阅读Java中的继承,接口,内部类和匿名内部类,以便更深入地理解.
小智 8
在 Java 8 之后,您可以使用“default”关键字作为休闲方式在接口内定义非抽象方法。
public interface MyIntface {
void abstract_method(int a, String b);
default void nonabstract_method(){
System.out.println("do something");
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11403 次 |
| 最近记录: |