五分钟明白---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(); }
