资讯专栏INFORMATION COLUMN

匿名内部类总结

sPeng / 2053人阅读

摘要:中的匿名内部类总结实例不使用匿名内部类来实现抽象方法运行结果可以看到,我们用继承了类,然后实现了的一个实例,将其向上转型为类的引用但是,如果此处的类只使用一次,那么将其编写为独立的一个类岂不是很麻烦这个时候就引入了匿名内部类实例匿名内部类的

java中的匿名内部类总结
实例1:不使用匿名内部类来实现抽象方法

abstract class Person {
    public abstract void eat();
}
 
class Child extends Person {
    public void eat() {
        System.out.println("eat something");
    }
}
 
public class Demo {
    public static void main(String[] args) {
        Person p = new Child();
        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

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/65927.html

相关文章

  • java内部总结

    摘要:每个内部类都能独立地继承一个接口,而无论外部类是否已经继承了某个接口。因此,内部类使多重继承的解决方案变得更加完整。内部类中的与其他类一样是指的本身。但是静态内部类却没有。 问题:内部类、静态内部类区别、使用场景? 1.静态内部类可以有静态成员(方法,属性),而非静态内部类则不能有静态成员(方法,属性)。 2.静态内部类只能够访问外部类的静态成员,而非静态内部类则可以访问外部类的所有...

    xiaodao 评论0 收藏0
  • Java系列之内部

    摘要:方法内部类就是局部内部类,一般定义在类的局部位置,它可以访问当前代码块及外部类的所有变量。 今天温习一下 Java 中的内部类,内部类一般有如下几种:静态内部类、成员内部类、匿名内部类和方法内部类,下文中将主要介绍静态内部类和成员内部类,主要内容如下: 概述 静态内部类 成员内部类 匿名内部类和方法内部类 总结 概述 顾名思义内部类就是在一个类内部定义的类,它是内部类是一个独立的类...

    crelaber 评论0 收藏0
  • Java知识点总结(三个步骤)

    摘要:对于一个名为的外围类和一个的内部类,在编译成功后,会出现这样两个文件和。 Java知识点总结(三个步骤) @(Java知识点总结)[Java, Java面向对象] [toc] 1-定义类 修饰符 访问修饰符: public protected default private 其他修饰符 abstract:抽象类不能实例化,专门用于继承的类final:最终类不能被继承 类名(驼峰命名...

    syoya 评论0 收藏0
  • Java内部(Inner Class)小记

    摘要:要注意的是,成员内部类不能含有的变量和方法。匿名内部类是唯一一种没有构造器的类。静态嵌套类又叫静态局部类嵌套内部类,就是修饰为的内部类。以上是对内部类的一些学习和总结,纰漏之处希望各位小伙伴友情指点,共同进步。 内部类(inner class)是定义在另一个类中的类,类名不需要和文件夹相同。但为什么要使用内部类呢?其主要原因有以下三点:  1.内部类方法可以访问该类定义所在的作用域中的...

    jackzou 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<