1. 匿名内部类概述

匿名内部类 :是内部类的简化写法。他是一个隐含了名字的内部类。开发中,最常用到的内部类就是匿名内部类了。

2. 书写格式

new 类名或者接口名() {
重写方法;
};

包含了:

  • 继承或者实现关系
  • 方法重写
  • 创建对象

所以从语法上来讲,这个整体其实是匿名内部类对象

3. 什么时候用到匿名内部类

实际上,如果我们希望定义一个只要使用一次的类,就可考虑使用匿名内部类。匿名内部类的本质作用是为了简化代码

之前我们使用接口时,似乎得做如下几步操作:

  1. 定义子类
  2. 重写接口中的方法
  3. 创建子类对象
  4. 调用重写后的方法
interface Swim {public abstract void swimming();
}// 1. 定义接口的实现类
class Student implements Swim {// 2. 重写抽象方法@Overridepublic void swimming() {System.out.println("狗刨式...");}
}public class Test {public static void main(String[] args) {// 3. 创建实现类对象Student s = new Student();// 4. 调用方法s.swimming();}
}

我们的目的,最终只是为了调用方法,那么能不能简化一下,把以上四步合成一步呢?匿名内部类就是做这样的快捷方式。

4. 匿名内部类前提和格式

匿名内部类必须继承一个父类或者实现一个父接口匿名内部类格式:

new 父类名或者接口名(){// 方法重写@Override public void method() {// 执行语句}
};

5. 使用格式

以接口为例,匿名内部类的使用,代码如下:

interface Swim {public abstract void swimming();
}public class Demo07 {public static void main(String[] args) {// 使用匿名内部类new Swim() {@Overridepublic void swimming() {System.out.println("自由泳...");}}.swimming();// 接口 变量 = new 实现类(); // 多态,走子类的重写方法Swim s2 = new Swim() {@Overridepublic void swimming() {System.out.println("蛙泳...");}};s2.swimming();s2.swimming();}
}

6. 匿名内部类的特点

  1. 定义一个没有名字的内部类
  2. 这个类实现了父类,或者父类接口
  3. 匿名内部类会创建这个没有名字的类的对象

7. 匿名内部类的使用场景

通常在方法的形式参数是接口或者抽象类时,也可以将匿名内部类作为参数传递。代码如下:

interface Swim {public abstract void swimming();
}public class Demo07 {public static void main(String[] args) {// 普通方式传入对象// 创建实现类对象Student s = new Student();goSwimming(s);// 匿名内部类使用场景:作为方法参数传递Swim s3 = new Swim() {@Overridepublic void swimming() {System.out.println("蝶泳...");}};// 传入匿名内部类goSwimming(s3);// 完美方案: 一步到位goSwimming(new Swim() {public void swimming() {System.out.println("大学生, 蛙泳...");}});goSwimming(new Swim() {public void swimming() {System.out.println("小学生, 自由泳...");}});}// 定义一个方法,模拟请一些人去游泳public static void goSwimming(Swim s) {s.swimming();}
}

Java 内部类之匿名内部类相关推荐

  1. Java内部类(匿名内部类)

    Java内部类(匿名内部类) 一.内部类 二.静态内部类 三.成员内部类 四.局部内部类(了解即可) 五.匿名内部类(重要) 一.内部类 1.概述 内部类就是一个定义在一个类里面的类,里面的类可以理解 ...

  2. Java内部类和匿名内部类的用法

    Java内部类和匿名内部类的用法     [尊重原创,转载请注明出处]http://blog.csdn.net/guyuealian/article/details/51981163 一.内部类:   ...

  3. Java 内部类 和 匿名内部类

    From:https://www.cnblogs.com/geeksongs/p/9836154.html 一,内部类 其实内部类是十分简单的,我们根据其字里行间的意义就可以知道内部类应该是一个类当中 ...

  4. Java 内部类和匿名内部类

    1.内部类 一个类定义在另外一个类的内部,这个该类就被称为内部类.内部类分为成员内部类(定义在外部类的成员位置)和局部内部类(定义在外部类的方法里面). (1) 成员内部类 class Outer { ...

  5. java匿名内部类runnable_Java内部类:匿名内部类(四)

    Java内部类分为4个部分进行阐述,分别为概览.成员内部类.局部内部类和匿名内部类. 在本文中是Java内部类的匿名内部类,主要讲述匿名内部类的概念.匿名内部类的好处.匿名内部类的使用前提.和匿名内部 ...

  6. Java基础(内部类和匿名内部类的用法)

    Java内部类和匿名内部类的用法 一.内部类:       (1)内部类的同名方法         内部类可以调用外部类的方法,如果内部类有同名方法必须使用"OuterClass.this. ...

  7. java接口匿名内部类_JAVA技术分享:接口,内部类,匿名内部类

    原标题:JAVA技术分享:接口,内部类,匿名内部类 接口: 接口中只有抽象方法,而没有非抽象方法 特点: 1:接口不能被实例化,只能通过多态的形式,让子类实例化 2:接口的子类 A:可以是具体类,但是 ...

  8. java中局部内部类_Java内部类详解--成员内部类,局部内部类,匿名内部类,静态内部类...

    一.内部类基础 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来说包括这四种:成员内部类.局部内部类.匿名内部类和静态内部类.下面就先来了解一 ...

  9. java局部内部类_Java 局部内部类、匿名内部类详解

    外部类与内部类 众所周知,每个java文件必须有一个与这个java文件同名的外部类,这个外部类可以是public或default的.而除了这个同名外部类,还可以有与这个同名外部类平级的其他外部类,但它 ...

最新文章

  1. [Pytorch]基于混和精度的模型加速
  2. 2021梧州一中高考成绩查询,2021年广西高考成绩查询网站查分网址:https://www.gxeea.cn/...
  3. Vue中使用el-tag标签实现输入多个字符串实现新增和修改回显(字符数组拼接和拆分)
  4. 安卓服务Service详解
  5. 六、Excel中重要的数据透视表,必须要学会
  6. Laravel的Class Laravel\Passport\Passport not found
  7. linux perl 安装目录,肿么查看linux是否安装了perl
  8. 文档管理系统_云脉纸质文档管理系统怎么玩?
  9. mysql实例怎么复制_Mysql实例MySQL数据库复制概论
  10. 数据结构与算法——递归、回溯与分治汇总整理
  11. BAT 为首的中国互联网公司为何陷入技术焦虑的怪圈?
  12. mybatis jar包_Spring4+SpringMVC+MyBatis整合思路
  13. one大白陪你聊聊2021年总结
  14. SELU︱在keras、tensorflow中使用SELU激活函数
  15. 投资为什么很难进步——越不懂 越自信︱投资道
  16. matlab 神经网络设计与应用,MATLAB 神经网络设计与应用(最新版)
  17. 5款创业在线学习的工具
  18. 高冷一字id_lol高冷而有诗意的id
  19. 请问add_mutually_exclusive_group函数什么意思?
  20. Redis Scard 命令

热门文章

  1. AttributeError:‘float‘ object has no attribute ‘astype‘
  2. 计算机底层架构(偏硬件)综述
  3. 常用的sql语句,sql使用大全
  4. 2019-1-5-问答-产品经理有哪些细分领域,对应特点是什么?
  5. IOTOS通采盒为BIM运维、GIS、CIM、数字孪生及IBMS高效率、低成本打通数据,接入楼宇园区子系统设备
  6. -eq、-ne、-gt、-ge、-lt、-le英文意思
  7. diskgenius系统迁移_关于系统迁移至SSD
  8. 腾讯实时音视频通话sdk集成----小程序版本
  9. 3d打印机效果突然拉跨问题
  10. 百度云for mac破解方法--获取无限svip