您的位置:首页 > 编程语言 > Java开发

java的匿名内部类

2015-04-27 15:35 190 查看
内部类

什么是内部类?

所谓内部类,就是一个类顶一个另一个类的里面。

public
class
A {
    int
i=0 ;
    class B{
       int
j=5 ;
       int funB(){
           int result =
i+j;
           return result;
       }
    }
}

那么B就是A的内部类,当经过javac编译后,会产生A.class和A$B.class两个字节码文件。

如何生成一个内部类对象

在类B中可以利用A类中的i。但是B和A不具有继承关系。这是因为类B创建的时候,类A就已经创建过。A和B在同一个包下,在B中可以访问类A中的变量。

public
class
Tests {
    public
static void
main(String[] args) {
       A.B B = new A().new B();
       System.out.println(B.funB());
    }
}

 

匿名内部类

没有名字的内部类,一般用在new一个接口的实现类。如下:

定义一个接口A:

public
interface
A {
public
void
dosomething();
}

定义一个类B

 
public
class
B {
    public
void
fun(A a){
       System.out.println("B的内部类");
       a.dosomething();
    }
}
在主函数里
public
class
Tests {
    public
static void
main(String[] args) {
       B B = new B();
       B.fun(new A() {
//接口是不能实例化的,这里我们new的是接口的实现类,该类是匿名的一个类
           @Override
           public
void
dosomething() {
              System.out.println("new出的匿名内部类");
           }
       });
    }
}
运行结果

 

在android开发中,使用匿名内部类的地方很多。比如在设置一个按钮的点击事件时,就需要用到匿名内部类。

  bt_main = (Button) findViewById(R.id.bt_main);
        bt_main.setOnClickListener(new OnClickListener(){
          
           @Override
           public
void
onClick(View v) {
Toast.makeText(getApplicationContext(),"您点击了按钮!", 3000).show();
           }
       });
 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 匿名内部类