Java8 改进的匿名内部类:
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 改进的匿名内部类:的更多相关文章
- Java面向对象进阶篇(内部类)
一. 概念 大部分时候,类被定义成一个独立的程序单元.有时候把一个类放在另一个类内部定义,这个类被称为内部类,包含内部类的类也被称为外部类. 内部类的主要作用: 内部类提供良好的封装,可以把内部类隐藏 ...
- Java学习笔记-内部类
内部类在Android中有着大量的运用 内部类 内部类提供了更好的封装:内部类可以直接访问外部类的私有数据:匿名内部类适合那些只需要使用一次的类.非静态内部类不能拥有静态成员.内部类比外部类可以多使用 ...
- Java8 Lambda表达应用 -- 单线程游戏server+异步数据库操作
前段时间我们游戏server升级到开发环境Java8,这些天,我再次server的线程模型再次设计了一下,耗费Lambda表情. LambdaJava代码.特别是丑陋不堪的匿名内部类,这篇文章主要就是 ...
- (1)java8初体验
很多博客都拿Comparator,我也贴一下吧. java8以前的匿名内部类用来排序. //匿名内部类 @Test public void java8Test() { Person p1 = new ...
- Java8函数式编程以及Lambda表达式
第一章 认识Java8以及函数式编程 尽管距离Java8发布已经过去7.8年的时间,但时至今日仍然有许多公司.项目停留在Java7甚至更早的版本.即使已经开始使用Java8的项目,大多数程序员也仍然采 ...
- java集合 之 Map集合
Map用于保存具有映射关系的数据,具有两组值:一组用于保存Map中的key:另一组用于保存Map中的value,形成key-value的存储形式. Map集合中包含的一些方法: void clear( ...
- Java集合 之 List 集合
1.什么是Lsit集合? List集合是一种元素有序的,可重复的集合,集合中每个元素都有自己的元素索引.List集合允许可重复的元素,可以通过索引来访问指定位置的元素. 2.Java8改进的List接 ...
- JAVASE笔记回顾
第一部分,JAVA基础和面向对象 part01 入门与开发环境搭建 1: 计算机基础知识(了解)(1)计算机(2)计算机硬件(3)计算机软件系统软件:windows,linux,mac应用软件:QQ, ...
- Java学习笔记(七):内部类、静态类和泛型
内部类 在Java中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类.广泛意义上的内部类一般来说包括这四种:成员内部类.局部内部类.匿名内部类和静态内部类.下面就先来了解一下这四种 ...
随机推荐
- php字符串类型讲解
PHP 支持八种原始类型(type). 四种标量类型: string(字符串) integer(整型) float(浮点型,也作 double ) boolean(布尔型) 两种复合类型: array ...
- 清理mysql binlog日志
1.查看binlog日志 mysql> show binary logs; +------------------+------------+| Log_name | File_ ...
- 邮件服务端口 port 25、109、110、143、465、995、993
邮件服务端口 port 25.109.110.143.465.995.993 25端口(SMTP):25端口为SMTP(Simple Mail TransferProtocol,简单邮件传输协议) ...
- jquery knob旋钮插件
<!DOCTYPE html> <html> <head> <title>jQuery Knob 尝试</title> <script ...
- PYTHON实现识别图片
自学Python3第5天,今天突发奇想,想用Python识别图片里的文字.没想到Python实现图片文字识别这么简单,只需要一行代码就能搞定 #作者微信:2501902696 from PIL imp ...
- 35. CentOS-6.3安装Mysql-5.5.29
安装方式分为rpm和源码编译安装两种,本文是采用mysql源码编译方式,编译器使用Cmake.软件需要mysql-5.5.29.tar.gz和cmake-2.8.10.2.tar.gz,请自行下载.下 ...
- HTML5 监听移动端浏览器返回键兼容版本
// 往windosw对象中的历史记录注入URL的方法 function addUrl() { var state = { title: "title", url: "# ...
- c++builder 6 远程调试
Delphi7环境 一.目标远程机器: 安装服务光盘里有,单独安装,启动,启动后目标机的托盘图标中会出现一个小“虫子”debug的图标 bordbg61.exe D:\Program Files (x ...
- 前端-javascript-正则表达式
1.概念 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <titl ...
- Python之关系字段
参考:https://blog.csdn.net/pugongying1988/article/details/72870264 关系字段:一对一,多对一,多对多 一对一: 现在有很多一对一辅导班, ...