电信的电箱烧了,害我断了2天网,真拿命,耽误了

Java匿名内部类的总结:

没有名字的内部类。就是内部类的简化形式。一般只用一次就可以用这种形式。匿名内部类其实就是一个匿名子类对象。想要定义匿名内部类:需要前提,内部类必须继承一个类或者实现接口。

实例1:不使用匿名内部类来实现抽象方法

package day10;

abstract class Fu {
public abstract void run();
} class Zi extends Fu {
public void run() {
System.out.println("run....");
}
} public class AnonymousClass01 {
public static void main(String[] args) {
Zi p = new Zi();
p.run();
}
}

运行结果:

run....

可以看到,我们用Zi类继承了Fu类,然后实现了Zi的一个实例,如果此处的Zi类只使用一次,那么将其编写为独立的一个类岂不是很麻烦?

这个时候就引入了匿名内部类



实例2:匿名内部类的基本实现
package day10;

abstract class Fu {
public abstract void run();
} public class AnonymousClass01 {
public static void main(String[] args) {
new Fu(){
public void run(){
System.out.println("run....");
}
}.run();
}
}

运行结果:

run....

可以看到我们直接将抽象类Fu中的方法在大括号中实现了
这样可以省略一个类的书写
并且,匿名内部类还可以应用在接口上


实例3:在接口上使用匿名内部类
package day10;

interface Fu {
public abstract void run();
} public class AnonymousClass01 {
public static void main(String[] args) {
new Fu(){
public void run(){
System.out.println("run....");
}
}.run();
}
}

运行结果:

run....

由上面的例子可以看出,只要一个类是抽象的或是一个接口,那么其子类中的方法都可以使用匿名内部类来实现


实例4:调用匿名内部类中的2个方法(2种方法)
方法一:
<span style="font-size:18px;">package day10;

interface Fu {
public abstract void run();
public abstract void sleep();
} public class AnonymousClass01 {
public static void main(String[] args) {
Fu x = new Fu(){
public void run(){
System.out.println("run....");
}
public void sleep(){
System.out.println("sleep....");
} };
x.run();
x.sleep();
}
}</span>

运行结果:

run....
sleep....

引用指向对象 分别调用run()和sleep()方法!


方法二:
package day10;

interface Fu {
public abstract Fu run();
public abstract void sleep();
} public class AnonymousClass01 { public static void main(String[] args) {
new Fu(){
public Fu run(){
System.out.println("run....");
return this;
}
public void sleep(){
System.out.println("sleep....");
} }.run().sleep(); }
}

运行结果:

run....
sleep....

run()方法执行完毕后 返回Fu类对象   让匿名对象最后面的.run() 变成对象 然后再.sleep()      就是Fu.sleep()的意思。
上面的两种方法 在继承状态下同样可以使用

JAVA_SE基础——52.匿名内部类的更多相关文章

  1. JAVA_SE基础——26.[深入解析]局部变量与成员变量的区别

    黑马程序员入学blog ... 如果这章节很难懂的话应该返回去先看  JAVA_SE基础--10.变量的作用域 定义的位置上区别: 1. 成员变量是定义在方法之外,类之内的. 2. 局部变量是定义在方 ...

  2. JAVA_SE基础——9.基本数据类型间的转换

    前面我已经教会大家基本的数据类型进行了介绍,   然后这篇文章,我来介绍下,基本数据类型的转换. Java中有两种类型转换形式,分别是自动类型转换和强制类型转换. Step1.自动类型转换. 自动类型 ...

  3. JAVA_SE基础——8.基本数据类型

    基本数据类型有:整数类型.浮点类型.字符类型.布尔类型 整数类型 整数类型用来存储整数数值,即没有小数部分的数值.与C.C++语言相同,整数在Java语言中有3种表示形式:十进制.八进制和十六进制. ...

  4. JAVA_SE基础——7.常量&变量

    上一篇,我讲了标识符&关键字    这篇我来解释下变量&常量~~~ 变量与常量这两个概念相信大家都不会感到陌生,在数学中就已经涉及了变量与常量.理解变量与常量,可以举这样一个例子: 例 ...

  5. JAVA_SE基础——6.标识符&关键字

    学会写helloworld之后,  我们就开始来认识标识符&关键字 一.标识符 标识符是指可被用来为类.变量或方法等命名的字符序列,换言之,标识符就是用户自定义的名称来标识类.变量或方法等.更 ...

  6. JAVA_SE基础——5.第一个Java程序HelloWorld&注释的应用

    配置完JDK&环境变量后,我们就可以开始写程序了,那么程序怎么写呢,用什么工具呢,我建议 为了方便学习,我们最好在一个磁盘下建立一个专门的文件来写java程序,比如就在D盘下建立一个名为&qu ...

  7. JAVA_SE基础——4.path的临时配置&Classpath的配置

    这次,我来写下关于path的临时配置的心的 我来说个有可能的实例:如果你去到别人的电脑 又想写代码 又不想改乱别人的path配置的话  再说别人愿意你在别人的电脑上瞎配吗? 那该怎么办呢? 那没问题 ...

  8. JAVA_SE基础——2.环境变量的配置&测试JDK

    哈喽,利用晚上的空余时间再写篇心的~~~  谢谢大家 前一篇文章 JAVA_SE基础--JDK&JRE下载及安装http://blog.csdn.net/thescript_j/article ...

  9. JAVA_SE基础——1.JDK&JRE下载及安装

    这是我学了JAVA来写的第一篇博客: 我首先是在传智播客领了张.毕向东老师的免费JAVA学习光盘来学习! 下面我来教大家安装使用JAVA时候必备的JDK 1.首先上甲骨文公司的官方网站下载JDK的安装 ...

随机推荐

  1. Servlet 过滤器、拦截器、监听器以及文件上传下载

    在学习之初,总是对过滤器.拦截器.监听器这三个搞不清楚,现在进行一些记录,方便大家交流,也为了提高自身的学习能力! 如果想要了解这三个的作用,首先对servlet流程进行熟悉了解,servlet是客户 ...

  2. Eclipse增强代码提示插件Code Recommenders安装,顺便说说Eclipse插件安装方法

    1.为什么用Code Recommenders 在用过Intelij Idea后,发现它的自动代码提示非常智能,可以敲关键字就能提示,但是因为公司用的是Eclipse, 所以想找有没有这个插件能增强代 ...

  3. gulp详细入门

    gulp是基于Nodejs的自动任务运行器, 她能自动化地完成 javascript/coffee/sass/less/html/image/css 等文件的的测试.检查.合并.压缩.格式化.浏览器自 ...

  4. Mac下安装FFmpeg教程

    一.安装ffmpeg 分为两种安装方式: 1. 命令行安装 brew install ffmpeg 2. 下载压缩包安装 去 http://evermeet.cx/ffmpeg/ 下载7z压缩包,解压 ...

  5. JAVA设计模式--装饰器模式

    装饰器模式 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构.这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装. 这种模式创建了一个装饰 ...

  6. segment fault异常及常见定位手段

    问题背景 最近boot中遇到个用户态程序的segment fault异常,除了一句"Segment fault"打印外无其他任何打印.该问题复现概率较低,定位起来比较棘手.我们的b ...

  7. 《深入理解计算机系统》第7章:重定位PC相对引用的理解

    在第七章<链接>中的静态链接有对符号进行重定位PC相对引用的处理,书上对应的还有公式,但不是很好理解.现做实验对公式进行理解(公式内容如有兴趣可以参考原文)

  8. 手机端原生js实现下拉刷新数据

    HTML结构如下: <div class="outerScroller comment"> <div class='scroll comment'> < ...

  9. 使用async和wait进行异步编程

    本文来源于博客园-钱智慧,转载请注明出处 代码示例 // 要让一个方法成为异步方法: // - async修饰符. // - 返回类型是 Task 或者 Task<T>. 具体来说,如果函 ...

  10. javascript中的Promise使用

    参考自: http://m.jb51.net/article/102642.htm 1.基本用法: (1).首先我们new一个Promise,将Promise实例化 (2).然后在实例化的promis ...