本文介绍了Java匿名内部类的实现,对大家的学习或工作有一定的参考价值。让我们和边肖一起学习。
匿名内部类:
举个例子吧。让我们展示一下什么是匿名内部类。Endeavor刚接触的时候觉得哇,好奇怪的样子。这太尴尬了。我不知道你的感受。
为了比较,我们举一个普通类方法调用的例子(大家应该都懂):
输出是:
言归正传,匿名内班。从名字上来说,我想大家都知道什么是匿名内部类。
1.定义:是一个没有名字的内部类(内部类之前已经介绍过了)。2.使用内部类有什么好处?可以用一句话概括:简化写作。至于怎么简化,在哪里简化,后面再说。3.先说什么时候使用匿名内部类,也就是使用的前提和条件:只有存在继承和实现关系的时候才能使用。其实这个很好理解。首先,匿名内部类没有名字,那么如何描述它们并拥有新的对象呢?是的,没错。我们应该通过继承它的父类或实现一个接口来实现这个目标。
这里有一个例子:
输出结果:
看到这几行代码,我不应该解释为什么匿名内部类可以简化编写。
如何在匿名的内部类中调用方法,应该也是大家好奇的。毕竟,如何在没有匿名内部类的类名的情况下调用方法就成了问题。
1、匿名内部类中只有一个方法的情况
2、匿名内部类有一个方法调用起来很容易,那如果有多个方法呢,大家不会想这样吧?
尝试输出:
那么如何在匿名内部类中调用多个方法呢?
Endeavor有两种方法,如果大家还有更好的方法多多赐教哦!
1、利用多态的思想(匿名内部类的前提是存在继承或实现关系的)
输出结果:
2、改变方法类型,返回this
输出结果:
不知道大家看完有没有问题。如果要调用匿名内部类的独特方法呢?怎么称呼?
输出结果:
显然是做不到的,所以Endeavor认为有内部名字的内部类可以有自己唯一的方法,但前提是这个匿名内部类只有这一个方法。如果有多个方法,他只能继承父类的方法,重写这个方法或者实现接口。在有多个方法的情况下绝对不可能调用他自己的唯一方法,但是这个唯一方法可以存在,但是不能调用。我不知道你是否同意。
示例:
输出结果:
补充三点:
1.匿名内部类:匿名内部类只是没有类名,其他成员都是可用的。
之前说匿名内部类存在的前提是继承或者实现,但是我没有看到extends和implements这两个关键词。这是怎么回事?
答:很简单。没有匿名的内部类,也没有类名,更不用说使用关键字了。这些由jvm处理。
2.匿名内部类是实现接口。
3.接下来,我给大家分享一下匿名内部类最常见的用法,就是把它们作为参数使用。
输出结果:
关于详细解释Java匿名内部类的这篇文章到此结束。希望对大家的学习有帮助,也希望大家多多支持。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。