在使用多线程的时候,时常会使用两种方式实现,一种是直接继承Thread类来实现多线程,另外一种就是实现Runnable接口。

我们都知道,接口是没有构造方法的,同时匿名内部类也是没有构造方法的。原因有这几点:1.接口只是一个声明,需要有一个实现类实现这个接口。2.匿名内部类是匿名了,也就是说没有类名,所以就没有构造方法。

但是我们在new一个接口的时候常常会使用这种方式,就是用匿名内部类的方式去实现。

1 Runnable runnable=newRunnable() {2

3 @Override4 public voidrun() {5 for(int i=0;i<50;i++){6 System.out.println(i);7 }8 }9

10 };

在这里有一个new Runable(){},就是这里的Runnable(),这不就是构造方法吗?怎么会出现一个构造方法?

这时候突然想到一点就是Java所有的类都会默认继承一个Object类,而接口也是一个类,匿名内部类也是一个类,所以我就想是不是这里继承了Object,之后我在代码中加入了toString方法来确定是否含有Object类的内容。

1 Runnable runnable=newRunnable() {2

3 @Override4 public voidrun() {5 for(int i=0;i<50;i++){6 System.out.println(i);7 }8 }9

10 @Override11 publicString toString(){12 return "hello";13 }14

15 };

在这里使用了@Override注解证明了使用了Object法,另一个验证就是运行程序会发现内有重写方法的时候是类名和哈希值,改写后输出的是“Hello”。

那么我们就可以猜想,如果Runnable()调用了,是不是就证明了这时的Runnable向上转型成了Object类型,那么这里实际上调用了Object类中的构造方法,为了验证这一点我使用了IDEA的跟踪代码功能。发现使用super关键字的时候,代码跟踪到了Object方法,基本确定了这时调用了Object的构造方法。

=========================================

java 匿名类 构造方法_Java中接口式的匿名内部类的构造方法相关推荐

  1. java大数类阶乘_Java中的大数阶乘

    java大数类阶乘 It is not possible to store factorial for large number like 50 into inbuilt data types lik ...

  2. java 枚举类 扑克牌_Java中的枚举和多态,扑克牌示例

    我尝试设计一个关于扑克牌的项目.我有一张卡片 class Card { Rank rank; Suit suit; } 西装是一个枚举. enum Suit { .... } Rank应该有一个方法g ...

  3. java color类 蓝色_java中Color类的简单总结

    标签: java中Color类的简单总结 1.颜色的常识 任何颜色都是由三原色组成(RGB),JAVA中支持224为彩色,即红绿蓝分量取值 介于0-255之间(8位表示) 2.Color类中的常量 p ...

  4. java file类包_Java中File类的常用API

    Java.io包下的File类实现了Serializable和Comparable两个接口 1.创建文件 注意: 1).如果D盘下file文件夹不存在,则抛出异常;如果D盘下file文件夹存在,则创建 ...

  5. java包 类 方法_Java中包与包之间方法的调用及其关键字区分(基础)

    最近在写应用时,对包与包之间方法的调用不太清楚,专门看视频和网站后整理了这篇文章,希望对刚入门的同志有所帮助,进入主题. 首先我们先简单看看Java中private.protected.public和 ...

  6. java 线程类 通信_Java 中利用管道实现线程间的通讯

    在Java 语言中,提供了各种各样的输入输出流(stream),使我们能够很方便的对数据进行操作,其中,管道(pipe)流是一种特殊的流,用于在不同线程(threads)间直接传送数据.一个线程发送数 ...

  7. java stack 类 效率_Java中ArrayList、LinkedList、Vector、Stack的比较

    一.介绍 先回顾一下List的框架图 由图中的继承关系,可以知道,ArrayList.LinkedList.Vector.Stack都是List的四个实现类. AbstractList是一个抽象类,它 ...

  8. java异常类关键字_Java中的异常处理关键字是什么?

    java异常处理中使用了四个关键字. throw:有时我们明确要创建异常对象然后抛出它来停止程序的正常处理.throw关键字用于向运行时抛出异常来处理它. throws:当我们在方法中抛出任何已检查的 ...

  9. java匿名类_Java匿名类

    java匿名类 Java anonymous class are like local class or inner class without a name. We can use java ano ...

最新文章

  1. modifiers在JAVA中_Java Modifier.classModifiers方法代碼示例
  2. lr java vuser_LR Java脚本编写方法
  3. R语言使用ggplot2包使用geom_density()函数绘制分组密度图(改变图例位置、移除图例)实战(density plot)
  4. BZOJ 2724蒲公英 (分块) 【内有块大小证明】
  5. 让逻辑关系破缺的最小空间尺寸
  6. 在JSP中读取POST的JSON数据
  7. tensorflow测试gpu_如何检验 tensorflow-gpu 安装成功 ?
  8. php异步检测用户名是否已经存在,AJAX实例-检测用户名是否存在
  9. mongDB批量插值
  10. Jsp+Ssm+Mysql实现的在线宠物商城系统
  11. pytorch如何将训练提速?
  12. [Vue] : vue-resource 实现 get, post, jsonp请求
  13. powerpc如何移植Linux系统,PowerPC平台 u-boot 移栽
  14. paip.提升安全性-----使用HTTPS SSL
  15. 快解析结合绿盾文档加密软件
  16. 上海亚商投顾:三大指数小幅下跌 两市成交金额创年内新低
  17. 【运筹学】线性规划 单纯形法原理 ( 构造初始可行基 | 基变换 | 最优性检验 | 解的判别 | 检验数 | ( 唯一 / 无穷多 ) 最优解判别定理 | 无界解判别定理 )
  18. 网络安全专家郭盛华:无线传感器网络的传输安全性
  19. SpringBoot -- 抱团学习社区系统项目实战
  20. 升腾 linux管理密码,升腾Linux终端使用指南

热门文章

  1. 嵌入式系统课程设计报告
  2. 基于CycleGAN的图像风格转换
  3. “买不来”的数字化转型,每家的“乐高”都不同
  4. 在线教育系统项目开发功能介绍
  5. 学习管理系统能为企业带来哪些好处呢?
  6. 【云周刊】第124期:实时计算来临!阿里新一代实时计算引擎 Blink,每秒支持数十亿次计算
  7. Android开发--调用系统邮件
  8. 关于6西格玛管理理念(转载)
  9. ccf-csp历年满分题解 + 总结汇总(已完成55题,持续更新中...)
  10. C语言学习实例2-提成计算