`
SwordShadow
  • 浏览: 268243 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java 匿名内部类总结

    博客分类:
  • java
阅读更多

匿名内部类也就是没有名字的内部类

 

正因为没有名字,所以匿名内部类只能使用一次,它通常用来简化代码编写

 

但使用匿名内部类还有个前提条件:必须继承一个父类或实现一个接口

 

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

 

 

abstract class Person {
    public abstract void eat();
}
 
public class Demo {
    public static void main(String[] args) {
        Person p = new Person() {
            public void eat() {
                System.out.println("eat something");
            }
        };
        p.eat();
    }
}

运行结果:eat something

 

可以看到,我们用Child继承了Person类,然后实现了Child的一个实例,将其向上转型为Person类的引用

 

但是,如果此处的Child类只使用一次,那么将其编写为独立的一个类岂不是很麻烦?

 

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

 

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

 

abstract class Person {
    public abstract void eat();
}
 
public class Demo {
    public static void main(String[] args) {
        Person p = new Person() {
            public void eat() {
                System.out.println("eat something");
            }
        };
        p.eat();
    }
}

 

 

 

运行结果:eat something

 

可以看到,我们直接将抽象类Person中的方法在大括号中实现了

 

这样便可以省略一个类的书写

 

并且,匿名内部类还能用于接口上

 

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

 

interface Person {
    public void eat();
}
 
public class Demo {
    public static void main(String[] args) {
        Person p = new Person() {
            public void eat() {
                System.out.println("eat something");
            }
        };
        p.eat();
    }
}

 运行结果:eat something

 

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

 

最常用的情况就是在多线程的实现上,因为要实现多线程必须继承Thread类或是继承Runnable接口

 

实例4:Thread类的匿名内部类实现

 

public class Demo {
    public static void main(String[] args) {
        Thread t = new Thread() {
            public void run() {
                for (int i = 1; i <= 5; i++) {
                    System.out.print(i + " ");
                }
            }
        };
        t.start();
    }
}

 

 

运行结果:1 2 3 4 5

 

实例5:Runnable接口的匿名内部类实现

 

 

public class Demo {
    public static void main(String[] args) {
        Runnable r = new Runnable() {
            public void run() {
                for (int i = 1; i <= 5; i++) {
                    System.out.print(i + " ");
                }
            }
        };
        Thread t = new Thread(r);
        t.start();
    }
}

 

 

运行结果:1 2 3 4 5

 

 

 

 

 

 

原文链接:http://www.cnblogs.com/nerxious/archive/2013/01/25/2876489.html

 

 

 

 

分享到:
评论

相关推荐

    java中的匿名内部类总结

    java中的匿名内部类总结

    170331-01.匿名内部类总结.java

    170331-01.匿名内部类总结.java 170331-01.匿名内部类总结.java 匿名 内部类 总结 java

    java中匿名内部类详解

    主要对java中的匿名内部类的详细总结,需要的朋友可以参考下

    java内部类总结(含概念和实例)

    最全面的java内部类总结,概念和实例帮助深入理解!

    JAVA语法总结 - 内部类

    内部类分为成员内部类、静态嵌套类、方法内部类、匿名内部类。 几种内部类的共性: A、内部类仍然是一个独立的类,在编译之后会内部类会被编译成独立的.class文件,但是前面冠以外部类的类命和$符号。 B、内部类不能...

    java中的匿名内部类详细总结

    以下是对java中的匿名内部类进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助

    java内部类学习资料

    java内部类学习资料,包括成员内部类,匿名内部类,以及内部类代码,和内部类相关总结

    Java 匿名内部类详解及实例代码

    主要介绍了Java 匿名内部类详解及实例代码的相关资料,需要的朋友可以参考下

    java语言--内部类总结

    1,概述 2,分类 3,使用方法分:A,成员内部类 B,局部内部类 C,静态内部类 D,匿名内部类等,讲解详细,附有相应代码,,,

    JAVA 面向对象程序设计第8章 内部类和泛型.pptx

    8.3.1 匿名内部类的实现 ;8.3.1 匿名内部类的实现 ;8.3.1 匿名内部类的实现 ;8.3.1 匿名内部类的实现 ;8.3.2 学生实践练习;8.3.3 学生实践练习;8.3.3 学生实践练习;8.4 泛型;8.4.1 泛型概述;8.4.1 泛型概述;8.4.2 ...

    内部类使用的思维导图

    对于Java内部类的使用进行总结,根据语法,特征,注意事项等创建出的关于内部类的思维导图,欢迎下载使用!编辑软件freemind

    Java 内部类

    Java内部类学习总结,供他人参考

    java中的内部类内部接口详解

    文章目录简介内部类静态内部类非静态内部类静态方法内部类非静态方法的内部类匿名类内部接口总结 简介 一般来说,我们创建类和接口的时候都是一个类一个文件,一个接口一个文件,但有时候为了方便或者某些特殊的原因...

    Java内部类的一些总结

     内部类分为: 成员内部类、局部内部类、静态嵌套类、匿名内部类 。  1.成员内部类  成员内部类是普通的内部类,它的定义为位于另一个类的内部,形如下面的形式:  class Outter {  private int age = 12;...

    java常用及 总结

    列举了java常用开发类 及开发心得 设计SE的内容 WEB内容 以及android常用的匿名内部类

    java 面试题 总结

    java.lang.String类是final类型的,因此不可以继承这个类、不能修改这个类。为了提高效率节省空间,我们应该用StringBuffer类 3、int 和 Integer 有什么区别 Java 提供两种不同的类型:引用类型和原始类型(或内置...

    java基础知识总结

    非常全的java基础知识总结,包括线程,IO,堆栈,内部类,匿名类,面试题等等

    JAVA入门1.2.3:一个老鸟的JAVA学习心得 PART1(共3个)

    11.2.5 总结:类的修饰符 297 11.3 方法的修饰符 297 11.3.1 方法的访问控制符 298 11.3.2 public:没有限制的修饰符 299 11.3.3 protected:仅对子类和同包的类可见 300 11.3.4 默认控制符:仅在本包中可见 ...

    java.xmind

    java基础总结:内含java概述,java基本语法,面向对象,内部类匿名内部类,常用API,正则表达式,集合与泛型,单元测试,反射,网络编程,多线程,IO流,FILE类,异常处理

Global site tag (gtag.js) - Google Analytics