java接口中的内部类_使用Java中的接口的匿名内部类

小编典典

1)为什么我们能够直接从接口创建匿名内部类,而不必通过实现该接口的类创建一个匿名内部类?

2)为什么我无法创建实现ActionListener的匿名内部类,而不是直接从第二类代码片段中直接从其实现?

当使用implementsXXXX

创建一个类时,您正在定义一个类(内部或非内部),并且必须给它起一个名字,确定我们可以做到,这就是我们经常做的事情。匿名内部类没有名字,它更像是一个表达式。

而且我认为这将帮助您了解什么是匿名类。

匿名类是一个表达式。除了没有名称外,它们类似于本地类

。匿名类表达式的语法类似于构造函数的调用,只是代码块中包含类定义。

考虑一下frenchGreeting对象的实例化:

HelloWorld frenchGreeting = new HelloWorld() {

String name = "tout le monde";

public void greet() {

greetSomeone("tout le monde");

}

public void greetSomeone(String someone) {

name = someone;

System.out.println("Salut " + name);

}

};

匿名类表达式包含以下内容:

新的运营商

要实现的接口名称或要扩展的类的名称 。在此示例中,匿名类正在实现接口HelloWorld。

括号中包含构造函数的参数,就像普通的类实例创建表达式一样。注意: 在实现接口时,没有构造函数,因此 ,如本例所示, 使用一对空括号 。

一个主体,它是一个类声明主体。更具体地说,在主体中,允许使用方法声明,但不允许使用语句。

因为匿名类定义是一个表达式,所以它必须是语句的一部分。在此示例中,匿名类表达式是实例化frenchGreeting对象的语句的一部分。(这解释了为什么在大括号后面有一个分号。)

2020-11-01

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值