五分钟明白---java 匿名内部类

匿名内部类首先要明白匿名,匿的是谁的名-----子类对象或实现类对象。也就是说匿名内部类就是父类的子类对象或者是接口的实现类对象

我先介绍格式再用一个例子你就明白了

两种格式:

格式一:

new 类A(){ 方法体 } 此时产生的是类A的子类对象;

格式二:

new 接口A(){ 方法体 } 此时产生的是接口A的实现类对象;

一个简单的例子就让你明白

首先是我们通常写的java代码:

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

再写成匿名内部类的形式:

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 apple"); } }; p.eat(); } }

我们用Child继承了Person类,然后实现了Child的实例,将其转为Person抽象类的引用,而Child类就是我们在匿名内部类中隐藏的类,写成匿名类

最后的main方法中还可以省略一些,写成这样(效果是一样的):

public static void main(String[] args) { new Person() { public void eat() { System.out.println("eat apple"); } }eat(); }
经验分享 程序员 微信小程序 职场和发展