我有一个玩具狗,有一个接口用于启动它,按照传统方法就是写一个类并实现该接口,且该类只使用一次(在启动时使用,后面再不使用)
但是如果我有一堆玩具,我每个玩具都要去写一个类来实现start这个接口吗?并且这个类还只使用一次。显然很繁琐,代码也不简洁。
这时候匿名内部类就派上用场了:
在Tools类中我可以将我的一堆玩具的启动都用匿名内部类来实现,很简洁
接口匿名内部类的形式为:new 接口名(){
类体
}
并用一个引用接收;
那匿名内部类是什么呢?匿名怎么体现呢?
其实下面红色范围的代码在底层其实是这样的:
这个才是真正的匿名内部类,只是由jdk在底层操作的;
匿名内部类并非没有名字,只是你看不见,但是可以通过getclass来查看
在进行了上面的操作后,随即就new 了一个对象,并用dog引用来接收
匿名内部类只能使用一次,即使你知道了这个匿名内部类的隐藏名字,你也不能再自行 new一个这个类的对象