1
7
如果您对匿名内部类感兴趣,它们的工作方式如下所示。 我们将继续使用mouselistener示例。
的接口
在应用程序的某个地方,您可能希望响应鼠标事件,因此使用匿名内部类,您可以这样做。
您在这里所做的是创建一个新的类(没有名称,因此是匿名的),该类 实现mouseListener接口 . 如上所述,您没有在接口上创建非抽象方法。 您还可以创建一个新的命名类(“命名类”表示常规的旧类):
那你就去别的地方吧
看到区别了吗? 我希望这有帮助。祝你好运。 请阅读Java中的继承、接口、内部类和匿名内部类,以便更深入地理解。 |
2
15
接口方法的定义是公共的和抽象的,因此在接口中不能有非抽象的方法。 |
3
1
不,它不能在Java 6或7中完成。它将成为可能,在一个回合的方式,作为一部分 project lambda 这是为Java 8预定的。所提出的机制称为扩展方法。 |
4
1
在Java中,你不能。也许你正在思考的是一个抽象类。
所以,就像在常规类中一样,您可以为一些具体的方法提供实现。和在接口中一样,您可以声明抽象方法的签名。这些方法将由扩展抽象方法的具体类实现。与接口类似,抽象类不能实例化。 实际的主要区别在于,具体类是通过对抽象类进行子类创建的。因此,一个具体类只能扩展一个抽象类,而它可以实现多个接口。 |
5
1
您将“接口中的非抽象方法”与“实现接口的类”混淆了。您的问题:
可能是因为传递给addMouseListener(MouseListener)的对象(它不接受对象btw,而是MouseListener接口的实例)是实现该接口的类的实例:
我建议你阅读一个关于Java(或OO)基础的教程,比如 this section 关于Java教程的。 |
6
1
在爪哇,接口方法默认为公共的和抽象的。 例如:
这与:
所以第一个选择是不好的做法。关键是你 不能 在接口内部使用非抽象方法,因为它们在默认情况下是抽象的。但在抽象类中,可以使用非抽象或抽象方法。 |
7
0
使用Java 8可以在接口内实现方法的默认实现,请访问此链接。 http://www.lambdafaq.org/what-are-default-methods/ |
Schadre · C-plus编码错误 2 年前 |
Nithin K · 即使类属性的类型正确,也会获取异常 2 年前 |
amirreza870 · Python OOP-更改类文本 2 年前 |
A_K · 使用cat或打印方法打印部分内容的子集闭包 2 年前 |
Mo Fatah · 如何使用Python类打印数独板? 2 年前 |