1 class Outer 2 { 3 //内部类 4 class InnerClass 5 { 6 void show() 7 { 8 System.out.println("类InnerClass中的show()..."); 9 } 10 } 11 //内部接口 12 interface InnerInterface 13 { 14 void show(); 15 } 16 17 void show() 18 { 19 //方法中通过匿名实现方式调用 20 new InnerInterface() 21 { 22 public void show() 23 { 24 System.out.println("接口InnerClass中的show()...类Outer中show()中的InnerInterface的show()..."); 25 } 26 }.show(); 27 } 28 29 } 30 public class ClassInterface 31 { 32 public static void main(String[] args) 33 { 34 Outer outer = new Outer(); 35 //outer.new InnerClass().show(); //1、外部类调用内部类中的方法show() ---成功 36 37 //outer.show(); //2、类Outer中通过匿名实现方式调用 ---成功 38 39 //3、外部类中通过匿名实现方式调用 40 outer.InnerInterface() 41 { 42 43 @Override public void show() 44 { 45 System.out.println("接口InnerClass中的show()..."); 46 } 47 }.show(); 48 /* 49 上面的这句报的错误: 50 51 ClassInterface.java:40: 错误: 匿名类实现接口; 不能有限定符 - 对于新 52 outer.new InnerInterface() 53 1 个错误 54 */ 55 } 56 }
下面可以运行:
1 public static void main(String[] args) 2 { 3 new Outer.InnerInterface() 4 { 5 @Override public void show() 6 { 7 // TODO Auto-generated method stub 8 System.out.println("覆盖没。。。。。");// 答:覆盖了!- -。 9 } 10 }.show(); 11 }