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:用匿名类实现

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

Java8 改进的匿名内部类:的更多相关文章

  1. Java面向对象进阶篇(内部类)

    一. 概念 大部分时候,类被定义成一个独立的程序单元.有时候把一个类放在另一个类内部定义,这个类被称为内部类,包含内部类的类也被称为外部类. 内部类的主要作用: 内部类提供良好的封装,可以把内部类隐藏 ...

  2. Java学习笔记-内部类

    内部类在Android中有着大量的运用 内部类 内部类提供了更好的封装:内部类可以直接访问外部类的私有数据:匿名内部类适合那些只需要使用一次的类.非静态内部类不能拥有静态成员.内部类比外部类可以多使用 ...

  3. Java8 Lambda表达应用 -- 单线程游戏server+异步数据库操作

    前段时间我们游戏server升级到开发环境Java8,这些天,我再次server的线程模型再次设计了一下,耗费Lambda表情. LambdaJava代码.特别是丑陋不堪的匿名内部类,这篇文章主要就是 ...

  4. (1)java8初体验

    很多博客都拿Comparator,我也贴一下吧. java8以前的匿名内部类用来排序. //匿名内部类 @Test public void java8Test() { Person p1 = new ...

  5. Java8函数式编程以及Lambda表达式

    第一章 认识Java8以及函数式编程 尽管距离Java8发布已经过去7.8年的时间,但时至今日仍然有许多公司.项目停留在Java7甚至更早的版本.即使已经开始使用Java8的项目,大多数程序员也仍然采 ...

  6. java集合 之 Map集合

    Map用于保存具有映射关系的数据,具有两组值:一组用于保存Map中的key:另一组用于保存Map中的value,形成key-value的存储形式. Map集合中包含的一些方法: void clear( ...

  7. Java集合 之 List 集合

    1.什么是Lsit集合? List集合是一种元素有序的,可重复的集合,集合中每个元素都有自己的元素索引.List集合允许可重复的元素,可以通过索引来访问指定位置的元素. 2.Java8改进的List接 ...

  8. JAVASE笔记回顾

    第一部分,JAVA基础和面向对象 part01 入门与开发环境搭建 1: 计算机基础知识(了解)(1)计算机(2)计算机硬件(3)计算机软件系统软件:windows,linux,mac应用软件:QQ, ...

  9. Java学习笔记(七):内部类、静态类和泛型

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

随机推荐

  1. Python XML解析

    什么是XML? XML 指可扩展标记语言(eXtensible Markup Language). 你可以通过本站学习XML教程 XML 被设计用来传输和存储数据. XML是一套定义语义标记的规则,这 ...

  2. ERROR 1045 (28000): Access denied for user 'hive'@'localhost' (using password: YES)

    [root@master native]# mysql -uhive -pEnter password: ERROR 1045 (28000): Access denied for user 'hiv ...

  3. [Dart] Flutter 上传文件

    /** * 请求响应数据 */ class MsgResponse { int code; // 状态代码,0 表示没有错误 Object data; // 数据内容,一般为字符串 String er ...

  4. 好久没玩laravel了,5.6玩下(二)

    做个项目的增删改查 第一步  把数据库的表结构建好,生成迁移 1 怎么建,当然是用php artisan命令了 使用 Artisan 命令 make:migration 来创建一个新的迁移: php ...

  5. 16. orcle中replace的用法及例子

    replace 函数用法如下: replace('将要更改的字符串','被替换掉的字符串','替换字符串'); 例子: select  replace ('1,2,3',',',';') from d ...

  6. 微信公众号自动回复 node

    纯属分享记录: app.js var bodyParser = require('body-parser'); require('body-parser-xml')(bodyParser); var ...

  7. UI5-文档-2-开发环境

    这一部分将指导您安装.配置和设置SAPUI5开发环境的最常见和推荐用例. 请注意:您可以在不同的平台上使用SAPUI5.各自平台的许可和维护条件也适用于SAPUI5.例如,如果在SAP云平台上使用SA ...

  8. WINFORM小列子参考

    1.用树型列表动态显示菜单   密码:zx9t 二.Popup窗口提醒(桌面右下角出现)   密码:cjjo 三.台历 密码:nq4m 四.文件复制  密码:lsqj 五.进度条  密码:byti 六 ...

  9. redis 查询key数量

    info查询所有库的key数量 dbsize查询当前库的key数量 keys * 查询当前库的所有key,数量少的时候可以用,当key很多的时候很慢,be careful!

  10. 【OpenPose-Windows】运行OpenposeDemo.exe 如何保存图像运行结果及关节点信息

    跑过很多次openposeDemo了,不管是video.Webcam还是Images,都是运行结果一闪而过,然而我们所要的肯定不是只看一下运行结果就完事的,很多情况下,我们都希望能够把运行结果的图像. ...