java中的匿名内部类总结

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接口

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,224评论 18 399
  • 内部类(Nested Class)仍是独立的类,只不过被包含于其他类中。编译之后内部类会被编译成独立的.class...
    七弦桐语阅读 3,207评论 0 4
  • 内部类是指在一个外部类的内部再定义一个类。类名不需要和文件夹相同。(注意,这里的外部类就是最常见的普通类,只是为了...
    海天一树X阅读 7,245评论 0 2
  • 你踩着猫步 在T台上冷漠 我猫着老腰 在烂路边苟活 你高不可攀 在屏幕里演 假装旁人都不懂的暧昧 我眼神紧张 在垃...
    村口三狗子阅读 1,193评论 0 0
  • 自从我有印象起,他就和我在一起。不论春夏秋冬,貌似总有一个时间点能够碰到。我听过他说的话,看过他写的字。能和她一起...
    徒增三千丝阅读 3,359评论 0 0

友情链接更多精彩内容