千锋教育-做有情怀、有良心、有品质的职业教育机构

手机站
千锋教育

千锋学习站 | 随时随地免费学

千锋教育

扫一扫进入千锋手机站

领取全套视频
千锋教育

关注千锋学习站小程序
随时随地免费学习课程

当前位置:首页  >  技术干货  > java培训教程:什么是匿名内部类?怎样创建匿名内部类?

java培训教程:什么是匿名内部类?怎样创建匿名内部类?

来源:千锋教育
发布人:qyf
时间: 2021-10-21 17:47:00 1634809620

  本期java教程要为大家分享的是关于java中的匿名内部类,相信很多同学在学java技术的时候有了解过,下面我们就来详细的看一下。

  java培训教程:什么是匿名内部类?怎样创建匿名内部类?匿名内部类是没有名称的内部类。在Java中调用某个方法时,如果该方法的参数是接口类型,除了可以传人个接口实现类外,还可以使用实现接口的匿名内部类作为参数,在匿名内部类中直接完成方法的实现。创建匿名内部类的基本语法格式如下:

  new父接口( ) {//匿名内部类实现部分

  下面通过一个案例学习匿名内部类的定义和使用,如文件4-23所示。

  interface Animal {

  roid shout ();

  public class Example23{

  public static void main (String[] args) {

  String name = “小花”;

  animalShout (new Animal (){

  @Override

  public void shout() {

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

  }) ;

  public static void animalShout (Animal an) {

  an.shout );

  }

  }

  文件4-23的运行结果如图4-23所示。

1

图4-23文件4-23的运行结果

  文件4-23中,第1~3行代码创建了Animal接口;

  第7~12行代码是调用animalShout( )方法,将实现Animal接口的匿名内部类作为animalShout( )方法的参数,并在匿名内部类中重写Animal接口的shout( )方法。

  需要注意的是,在文件4-23中的匿名内部类中访问了局部变量name,而局部变量name并没有使用final修饰符修饰,程序也没有报错。这是JDK8的新增特性,允许在局部内部类、匿名内部类中访问非final修饰的局部变量,而在JDK8之前,局部变量前必须加final修饰符,否则程序编译时报错。

  对于初学者而言,可能会觉得匿名内部类的写法比较难理解,下面分两步介绍匿名内部类的编写,具体如下。

  在调用animalShout()方法时,在方法的参数位置写上new Animal ( ) {},这相当于创建了一个实例对象,并将对象作为参数传animalShout( )方法。在new Animal( )后面有一对大括号,表示创建的对象为Animal的子类实例,该子类是匿名的,具体代码如下:

  animalShout (new Animal () {}) ;

  (2)在大括号中编写匿名子类的实现代码,具体如下:

  animalShout (new Animal ( ) {public void shoutSustem.out.println (“喵喵.....”);} });

  至此便完成了匿名内部类的编写。匿名内部类是实现接口的种简便写法,在程序中不定非要使用匿名内部类。对于初学者而言,不要求完全掌握这种写法,只需理解语法就可以。

  以上就是为大家介绍的“什么是匿名内部类?怎样创建匿名内部类?”的java培训教程,如果大家正在学习java知识或者是对java知识比较感兴趣的话,都可以添加我们的官方qq群-811099962,不仅可以获得java学习资料,并且群内还有专业的java老师定期为大家解决学习所遇到的问题,想要学习的小伙伴,不要错过。

tags:
声明:本站稿件版权均属千锋教育所有,未经许可不得擅自转载。
10年以上业内强师集结,手把手带你蜕变精英
请您保持通讯畅通,专属学习老师24小时内将与您1V1沟通
免费领取
今日已有369人领取成功
刘同学 138****2860 刚刚成功领取
王同学 131****2015 刚刚成功领取
张同学 133****4652 刚刚成功领取
李同学 135****8607 刚刚成功领取
杨同学 132****5667 刚刚成功领取
岳同学 134****6652 刚刚成功领取
梁同学 157****2950 刚刚成功领取
刘同学 189****1015 刚刚成功领取
张同学 155****4678 刚刚成功领取
邹同学 139****2907 刚刚成功领取
董同学 138****2867 刚刚成功领取
周同学 136****3602 刚刚成功领取
相关推荐HOT