匿名内部类!!!(一天学一点!加油!)

匿名内部类

匿名内部类:定义类的最终目的是创建一个类的实例,但是如果某个类的实例只是用一
次,则可以将类的定义与类的创建,放到与一起完成,或者说在定义类的同时就创建一
个类 , 以这种方法定义的没有名字的类成为匿名内部类。
 
格式如下:
new ClassOrInterfaceName(){
  /*类体*/
}

 

①匿名内部类可以继承一个类或实现一个接口,这里的 ClassOrInterfaceName 是匿名

 

内部类所继承的类名或实现的接口名。但匿名内部类不能同时实现一个接口和继承一个

 

类,也不能实现多个接口。如果实现了一个接口,该类是 Object 类的直接子类,匿名

 

类继承一个类或实现一个接口,不需要 extends 和 implements 关键字。

 

②由于匿名内部类没有名称,所以类体中不能定义构造方法,由于不知道类名也不能使

 

用关键字来创建该类的实例。实际上匿名内部类的定义、构造、和第一次使用都发生在

 

同样一个地方。此外,上式是一个表达式,返回的是一个对象的引用,所以可以直接使

 

用或将其复制给一个对象变量,如:

 

TypeName obj=new Name(){

 

/*此处为类体*/

 

}

 

同样,也可以将构造的对象作为调用的参数。例:

 

someMethod(new Name(){

 

/*此处为类体*/

 

});
例如以下代码:
Lambda表达式:
  说到匿名内部类,就不得不说到Lambda表达式,是jdk1.8新特性之一.其目的是简化匿名内部类,防止过多的匿名内部类,但它的使用
前提是需要一个函数式接口(@FunctionalInterface强制检查是否为一个函数式接口).

基本格式:

 

* ()->{}
* () 抽象方法的参数列表
* -> 箭头函数|箭头符号 
* {} 抽象方法的方法体

 

 

转载于:https://www.cnblogs.com/zhaohenghaoshuai/p/11164112.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值