关于JAVA匿名内部类我的理解,举一个小例子阐述。

来源:互联网 发布:柚子装修报价软件 编辑:程序博客网 时间:2024/05/16 08:53

 对于匿名内部类究竟是怎么回事,谈谈我自己的理解。

只有带有抽象方法,才提到匿名内部类。比如接口之中必须有抽象方法,只不过省略了abstract关键字,还有抽象类中也有抽象方法.

对于它到底是什么,我是这么理解的。比如说一个接口,现在有一个函数,想用到这个接口的实例作为参数,但是接口是不能作为实例的(new A()),只有类才行。所以要建

一个类继承这个接口 ,并且响应这个接口的方法。但是这个类只用这一次,所以不合适。这样就想用匿名内部类作为实例(new A(){ public void fun() {... } }).

例子:

正常思路:

interface A{
 public void fun();
}
class B implements A{
 public void fun(){
  System.out.println("Hello World!");
 }
}
class C {
 public void c1(A a){
  a.fun();
 }
 public void c2(){
  this.c1(new B());
 }
 
}
public class Niming2 {
 public static void main(String args[])
 {
  C c=new C();
  c.c2();
 }
 

}

加上匿名内部类,简化后:

interface A{
 public void fun();
}
class C {
 public void c1(A a){
  a.fun();
 }
 public void c2(){
  this.c1(new A(){ 
   public void fun(){
   System.out.println("Hello World!");
  }
});
 }
 
}
public class Niming2 {
 public static void main(String args[])
 {
  C c=new C();
  c.c2();
 }
 

}

 

原创粉丝点击