匿名内部类
匿名内部类:没有类名的类就称作为匿名内部类
匿名内部类的好处:简化书写。
匿名内部类的使用前提:必须存在继承或者实现关系才能使用。
//继承: 简单使用: abstract class Animal{ public abstract void run(); } //匿名内部类:匿名内部类只是没有类名,其他的一概成员都是具备的。 //匿名内部类与Anumal是继承的关系。目前创建Anmail子类对象 new Animal(){ //匿名内部的成员 public void run(){ System.out.println("狗在跑!!"); } //特有的方法 public void bite(){ System.out.println("狗在咬人"); } }.run(); 多态配合使用: class Animal { public abstract void run(); public abstract void sleep(); } Animal a = new Animal(){ public void run(){ System.out.println("猫在跑!"); } public void sleep(){ System.out.println("猫在睡觉!"); } //特有的方法 就不要用匿名内部类了 }; a.run(); a.sleep(); //实现 interface Dao{ public void run(); } class Outer{ public void print(){ new Dao(){//创建接口实现类的匿名内部类 public void run(){ System.out.println("执行成功"); } }.run(); } } class Demo{ public static void main (String[] args){ Outer out = new Outer(); out.print(); } } 匿名内部类一般用于实参。 interface Dao{ public void run(); } class Demo2{ public static void main(String[] args){ test(new Dao{ public void run(){ System.out.println("测试跑步成功"); } }); } public static void test(Dao d){ d.run(); } }