推荐优秀网站,同城分类信息网站建设,网站营销的优势,电子商务的推广匿名内部类也就是没有名字的内部类正因为没有名字#xff0c;所以匿名内部类只能使用一次#xff0c;它通常用来简化代码编写但使用匿名内部类还有个前提条件#xff1a;必须继承一个父类或实现一个接口实例1:不使用匿名内部类来实现抽象方法abstract class Person {public …匿名内部类也就是没有名字的内部类正因为没有名字所以匿名内部类只能使用一次它通常用来简化代码编写但使用匿名内部类还有个前提条件必须继承一个父类或实现一个接口实例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接口实例4Thread类的匿名内部类实现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实例5Runnable接口的匿名内部类实现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