1、匿名内部类适合创建那种只需要一次使用的类

2、匿名内部类定义格式:

new 实现接口() | 父类构造器(实参列表){//匿名内部类类体部分
}

3、从上面定义格式可以看出,匿名内部类必须实现一个接口,或继承一个父类,并且只可以实现一个接口,或实现一个父类

4、匿名内部类不能定义为抽象类,因为定义匿名内部类时,会立即创建匿名内部类的对象,因此不能定义为抽象类

5、匿名内部类不能定义构造器,因为匿名内部类没有类名,所以无法定义构造器,但可以定义初始化块,可以通过实例初始化,来完成构造器需要完成的事情

6、最常用的创建匿名内部类方式是:需要创建某个接口类型的对象

代码1:用实现类实现

//-定义一个接口
interface Product{public double getPrice();public String getName();
}//-实现接口
class AnonymouseProduct implements Product{public double getPrice(){return 20.5;}public String getName(){return "游戏机";}
}public class AnonymouseTest{//-与接口耦合public void test(Product p){System.out.println("张三买了一个"+p.getName()+",消费了"+p.getPrice()+"美元!");}public static void main(String[] args){//-多态方式创建实现类实例new AnonymouseTest().test(new AnonymouseProduct());}
}

运行结果:

代码2:用匿名类实现

//-定义接口
interface Product{public double getPrice();public String getName();
}public class AnonymouseTest{//-与接口耦合public void test(Product p){System.out.println("张三买了一个"+p.getName()+",消费了"+p.getPrice()+"美元!");}public static void main(String[] args){AnonymouseTest at=new AnonymouseTest();//-通过匿名类实现接口at.test(new Product(){public double getPrice(){return 20.5;}public String getName(){return "游戏机";}});}
}

运行效果:

代码3:用匿名类实现

继承父类来创建匿名内部类

转载于:https://www.cnblogs.com/baby-zhude/p/8321617.html

Java8 改进的匿名内部类:相关推荐

  1. java 内部类声明 抽象类_Java 抽象类、接口、内部类

    抽象类 当编写一个类时,常常会为该类定义一些方法,这些方法用以描述该类的行为方式,那么这些方法都有具体的方法体.但在某些情况下,某个父类只是知道其子类应该包含怎样的方法,但无法准确地知道这些子类如何实 ...

  2. 解析java匿名内部类

    Java 8 改进的匿名内部类 适用范围: 匿名内部类适合于方便程序实现接口,即匿名内部类相当于接口的实现类. 创建原理: 创建匿名内部类在实现接口的时候会立即创建一个没有名字类的实例用来实现某一接口 ...

  3. java8的新特性_Java8的

    java8的新特性 Java8没有安排释放,直到2014年3月,但早期发行版本已经可用了一段时间. 一些最有趣的新功能是: 流 功能接口 默认方法 Lambdas Java时间 流 新的java.ut ...

  4. 1.JAVA基础汇总

    参考资料:马士兵JAVA基础,高琪JAVA300集 JAVA全面thinkwon面试题:Java基础知识面试题(2020最新版)_ThinkWon的博客-CSDN博客_java基础知识面试题 JAVA ...

  5. 疯狂Java讲义(读书笔记)(第五章)

    第五章面向对象(下) 5.1 Java 8 增强的包装类 把字符串类型的值转换为基本类型的值有两种方式. 利用包装类提供的parseXxx(String s)静态(除了Character之外的所有包装 ...

  6. 疯狂Java讲义(九)

    本章内容: 本章的知识可以与前一章的内容补充阅读,因为Java 5增加泛型支持在很大程度上都是为了让集合能记住其元素的数据类型.在没有泛型之前,一旦把一个对象"丢进"Java集合中 ...

  7. 疯狂Java讲义-泛型

    泛型 本章思维导图 泛型入门 Java集合有个缺点--把一个对象"丢进"集合里之后,集合就会"忘记"这个对象的数据类型,当再次取出该对象时,该对象的编译类型就变 ...

  8. Java面试所需的知识

    目录 1. 计算机网络 (1)网络7层架构 (2)TCP/IP原理 (3)HTTP原理 (4)加密算法 2. 数据结构 3. 算法 (1) Java算法 (2)海量数据处理 4. 操作系统 5. My ...

  9. java多线程查询_利用Java函数式接口处理多线程查询

    Java函数式接口 有且只有一个抽象方法的接口被称为函数式接口. @FunctionalInterface注解: 该注解可用于一个接口的定义上, 一旦使用该注解来定义接口, 编译器将会强制检查该接口是 ...

最新文章

  1. C# 驱动连接 MongoDB ReplSet
  2. ubuntu中查找文件后高亮_ubuntu 中查找文件的命令
  3. 基于SAP Kyma的订单编排增强介绍
  4. robot:linux下安装robot环境
  5. 【英语学习】【Daily English】U02 Daily Routine L01 Sadly, my schedule is very tight.
  6. 企业文化用品展示网页的开发
  7. python压缩与读取.tar.bz2压缩包
  8. 开车十几年了,一些心得和大家分享、探讨
  9. bat调用ant_bat调用ant_Ant调用批处理文件编译VS2005程序
  10. maven setting 设置jdk版本
  11. 17.3.13--pycharm2和3的常识问题
  12. com.jogamp.opengl.GLException: J3D-Renderer-1: createImpl ARB n/a but required, profile > GL2 reques
  13. Android优雅地判断软键盘弹出状态
  14. qq互联php教程,thinkphp5怎么整合qq互联登录教程
  15. uniapp小程序根据经纬度精确定位
  16. java rs 什么意思_rs是什么意思?
  17. ios 网速监控_iOS 监测网络状态
  18. 2nm就靠它了!ASML加速研发新一代光刻机:更贵、更强
  19. XMind2TestCase 库的使用及自定义导出文档的格式
  20. Intellij IDEA使用(一)—— 安装Intellij IDEA(ideaIU-2017.2.3)并完成Intellij IDEA的简单配置

热门文章

  1. 【effective c++笔记】条款01 :视c++为一个语言联邦
  2. ITU-T G.1081 IPTV性能监测点 (Performance monitoring points for IPTV)
  3. java mongodb 时间查询_Spring-Data-MongoDB快速入门
  4. linux下 db2日志满了,DB2事务日志已满的解决方法
  5. redis php教程pdf,ThinkPHP中简单使用Redis
  6. 华为7c手机怎么恢复出厂设置_华为手机越用越卡,恢复出厂设置真有用?别乱来,看完就明白了!...
  7. Springboot接收ajax提交JSON数组
  8. java读取配置文件和获得项目根目录
  9. 【2021牛客暑期多校训练营5】Jewels(建图,最小匹配权,KM乱搞)
  10. 【NOIP2017】【Luogu3951】小凯的疑惑