猿问

一个简单的java匿名内部类,如何引用外面类的成员?

在java中,匿名内部类为什么不用使用"外部类名.this",就可以调用外部类的方法?

这是一段简单的android代码


public class MainActivity extends Activity {


    private Button btn;

    

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

        btn = (Button)findViewById(R.id.btn);

        //此处声明一个匿名内部类

        btn.setOnClickListener(new OnClickListener() {

            

            @Override

            public void onClick(View arg0) {

                Intent intent = new     Intent(MainActivity.this,Second.class);

                //在此处,startAtivity()是Activity的方法

                //这么写是对的 MainActivity.this.startActivity(intent);

                //为什么也可以不加MainActivity.this 这样调用?

                startActivity(intent);

            }

        });

    }


饮歌长啸
浏览 761回答 4
4回答

慕村225694

准确说这个问题属于继承关系,startActivity(Intent intent)方法属于Context类下的public方法,Activity继承自Context,自然也会拥有这个方法的使用权,而对于activity来说,这是个activity内的全局方法,只要在作用域内,都是可以直接调用的,默认就是当前activity的context(即activity.this)调用。
随时随地看视频慕课网APP

相关分类

Java
我要回答