脚本宝典收集整理的这篇文章主要介绍了

扣丁学堂Java培训分享匿名类 匿名内部类

脚本宝典小编觉得挺不错的,现在分享给大家,也给大家做个参考,希望能帮助你少写一行代码,多一份安全和惬意。

很多在学习Java基础的时候总会遇到一个问题,这个匿名内部类为什么只能用一次呢?他到底是什么玩意儿?为什么这里会new一个接口???这什么呀这是!本篇文章扣丁学堂Java培训小编给读者们分享一下匿名类,匿名内部类。

首先我们来看一下内部类的定义:

在一个类中定义另一个类,这样定义的类称为内部类。【包含内部类的类可以称为内部类的外部类】

如果想要通过一个类来使用另一个类,可以定义为内部类。【比如苹果手机类,苹果手机类中的黄金版的是特别定制的】

内部类的外部类的成员变量在内部类中仍然有效,内部类中的方法也可以调用外部类中的方法。【不论是静态还是非静态的,内部类都可以直接调用外部】

内部类的类体中不可以声明类变量和类方法

内部类可以由外部类使用外部类中在函数中创建内部类对象来使用,如果内部类的权限是非私有,非静态的,就可以在外部其他程序中被访问到,就可以通过创建外部类对象完成;如果内部类是静态的,非私有的,静态成员可以直接类名调用,非静态成员通过创建外部类对象使用。

再来看一下匿名类的定义:

匿名类,就是没有名称的类,其名称由Java编译器给出,一般是形如:外部类名称+$+匿名类顺序,没有名称也就是其他地方就不能引用,不能实例化,只用一次,当然也就不能有构造器。

匿名类就是利用父类的构造函数和自身类体构造成一个类。

匿名类可以继承父类的方法,也可以重写父类的方法。

匿名类可以访问外部类的成员变量和方法,匿名类的类体不可以声明称static成员变量和static方法。

匿名类由于是一个new的结果,所以其实可以赋值给一个父类对象。因此可以分为两种匿名类,成员匿名类和局部匿名类(作为函数参数)

上文都说匿名内部类就是没有名字的内部类,哪个类没有名字呢?好多文章都是直接告诉你什么什么是匿名内部类,如下面:

我们一般会用来做参数的传递, 直接用接口来做

public interface D { void run(); }

public class B{@Overridepublic void run(D d) { d.run(); } }

看到这里是不是还是很疑惑,为什么接口也能new了呢?其实不然,在我们写一个内部类的时候,我们是省略了一些东西的

public class cryptonym { public static void main(String[]args) { B b=new B(); //调用时使用匿名类创建匿名对象 b.show(new D( public void run() { System.out.println("hello");){ } }); }}

这样来看是不是就明了许多了?其实本意就是继承了D这个接口之后,重写了其中的方法。只不过我们再代码中对这个类使用的次数不多。所以我们不需要再去写一个继承的类,来加大JVM的工作量,是不是很有意思。

想要了解更多关于Java开发方面内容的小伙伴,请关注扣丁学堂Java培训官网、微信等平台,扣丁学堂IT职业在线学习教育有专业的Java讲师为您指导,此外扣丁学堂老师精心推出的Java视频教程定能让你快速掌握Java从入门到精通开发实战技能。

总结

以上是脚本宝典为你收集整理的

扣丁学堂Java培训分享匿名类 匿名内部类

全部内容,希望文章能够帮你解决

扣丁学堂Java培训分享匿名类 匿名内部类

所遇到的程序开发问题,欢迎加入QQ群277859234一起讨论学习。如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典网站推荐给程序员好友。 本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。

80%的人都看过