public
class
A
{
int
i
=
1
public
A()
{
Thread
thread
=
new
Thread()
{
public
void
run()
{
System.out.println("内部类run")
A.this.run()//调用外部类的run方法,输出
外部类run
}
this.run()//调用内部类的run方法
thread.start()
}
public
void
run()
{
System.out.println("外部类run")
}
}
在上面这个例子中,
thread是一个匿名类对象,在它的定义中,它的run函数里用到了外部类的run函数。这时由于函数同名,直接调用就不行了。这时有两种办法,一种就是把外部的
run
函数换一个名字,但这种办法对于一个开发到中途的应用来说是不可取的。那么就可以用这个例子中的办法用
外部类的类名加上this引用来说明要调用的是外部类的方法run。
是当前类的对象,但其实你写的时候并没有指代,只有创建了当前类的对象在调用该对象就是指代这个对象简单一点你就把在那个类里用了this 这个this就是指代这个类,而跟这类里你创建的其他对象没关系,(这是非官方,这么说其实是错的,但是好理解,你看着理解就好,其实是在创建对象后this才起作用)
最后,老铁别忘了采纳
this指的是当前正在访问这段代码的对象,当在内部类中使用this指的就是内部类的对象,为了访问外层类对象,就可以使用外层类名.this来访问,一般也只在这种情况下使用这种
示例代码,请注意第17行!代码来自《Android应用开发揭秘》
public class Activity01 extends Activity
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState)
/* 设置显示main.xml布局 */
setContentView(R.layout.main)
/* findViewById(R.id.button1)取得布局main.xml中的button1 */
Button button = (Button) findViewById(R.id.button1)
/* 监听button的事件信息 */
button.setOnClickListener(new Button.OnClickListener() {
public void onClick(View v)
{
/* 新建一个Intent对象 */
Intent intent = new Intent()
/* 指定intent要启动的类 */
intent.setClass(Activity01.this, Activity02.class)
/* 启动一个新的Activity */
startActivity(intent)
/* 关闭当前的Activity */
Activity01.this.finish()
}