1、匿名内部类:就是内部类的简化写法。
- 匿名内部类是局部内部类的一种,所以匿名内部类也应该写在方法里。
2、前提:存在一个类或者接口。(这里的类可以是具体类也可以是抽象类)
3、格式:
- new 类名或者接口名(){ 重写方法; }
4、本质是什么呢?是一个继承了该类或者实现了该接口的子类匿名对象。
5、其他:
- 匿名内部类只针对重写一个方法的时候使用。调用多次的时候,不适合,匿名对象调用完毕就是垃圾,可以被垃圾回收器回收。
- 匿名内部类是不能向下转型的,因为没有子类类名。
6、例:
1 class Demo { 2 public static void main(String[] args) { 3 Outer o = new Outer(); 4 o.method(); 5 } 6 } 7 8 interface Inter { 9 public void show1(); 10 public void show2(); 11 } 12 13 //匿名内部类只针对重写一个方法时候使用 14 class Outer { 15 public void method() { 16 /*new Inter(){ 17 public void show1() { 18 System.out.println("show1"); 19 } 20 21 public void show2() { 22 System.out.println("show2"); 23 } 24 }.show1();*/ 25 26 Inter i = new Inter(){ 27 public void show1() { 28 System.out.println("show1"); 29 } 30 31 public void show2() { 32 System.out.println("show2"); 33 } 34 35 /*public void show3() { 36 System.out.println("show3"); 37 }*/ 38 }; 39 40 i.show1(); 41 i.show2(); 42 //i.show3(); //匿名内部类是不能向下转型的,因为没有子类类名 43 } 44 }