黑马程序员技术交流社区
标题:
匿名内部类详解
[打印本页]
作者:
风色月下
时间:
2016-4-26 22:00
标题:
匿名内部类详解
求解答 匿名内部类的运用场景和它重写的方法 怎样去调用
作者:
yanwenyong
时间:
2016-4-26 22:44
匿名内部类,
这是一个内部类,
首先:该类的内容量不会太大,通常就过程来讲不要太复杂,
其次:该类需要和其所在的类有着至关重要的联系。
相比较而言,内部类因为没有名字,所以该类只能执行一次
如果确定该类实现的对象只执行某个行为的操作,
例如某个点击监听动作,去实现他的行为,
并且只针对该监听,其他监听不用执行该动作,
这种时候使用匿名内部类
个人总结,感觉一般匿名内部类都是去
通常new 一个接口类或者是一个抽象类
当然也有去直接new 一个实体类 例如多线程的操作
然后再去重写他的方法,来实现匿名内部类
仅仅是个人的感觉
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
public class MainActivity2 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
View view = findViewById(R.id.v);
/**在此处获取了点击监听的匿名内部类
* 若点击对象只想执行该命令,
* 而且该命令只能在此处执行,
* 那使用匿名内部类可以省略一些不必要的代码
*/
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
}
});
/**通常状态下是先去创建一个类,去实现OnClickListener接口
* 然后再去实例化一个对象来进行操作
*/
view.setOnClickListener(new MyOnClickListener());
}
/**
* 此处为创建了一个实现点击监听接口的类
* 该类不是匿名内部类
* 因为此类有名字(MyOnClickListener),因此在MainActivity2中
* 任何地方都可以实例化该类
*/
private class MyOnClickListener implements OnClickListener{
@Override
public void onClick(View v) {
}
}
////////////////////万恶的分割线////////////////////////////////////////////////
@Override
protected void onStart() {
/**
* 此处为通过匿名内部类获取一个线程对象
*/
new Thread(){public void run() {
};}.start();
/**
* 获取自己创建的内部类对象的实例
*/
MyThread mt = new MyThread();
mt.start();
/**
* 自己创建的对象可以重复调用
*/
MyThread mt2 = new MyThread();
mt2.start();
super.onStart();
}
/**
* 此处为创建一个类然后去继承Thread类
*实际上是为了重写里面的run方法
*/
private class MyThread extends Thread{
@Override
public void run() {
super.run();
}
}
}
复制代码
看看示例代码,希望能帮你区分,内部类和匿名内部类。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2