为什么Java中的某些方法不需要创建要使用的实例?

时间:2016-10-06 01:36:19

标签: java android android-intent

我正在学习一些Android开发。以下只是一个简单的多屏幕应用程序代码,供用户点击并更改为另一个屏幕。

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    final TextView redio = (TextView) findViewById(R.id.activity_redio);
    redio.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View view){
            Intent redioIntent = new Intent(MainActivity.this, redio.class);
            startActivity(redioIntent);
        }
        }
    );
}}

效果很好。但我对“startActivity(redioIntent)”提出了一个问题;'方法。与setOnClickListener()方法或JAVA中的其他常规方法不同,我不需要声明新实例以便使用它。我想知道为什么?此外,我如何区分哪些方法需要声明新实例,哪些方法不需要?

另一个问题是,在创建一个新的意图时,这个'是什么?裁判和redio.class是什么意思? 我检查了android开发人员的文档。它说MainActivity.this是一个上下文。但是什么是背景?为什么Intents需要上下文和类来创建?

3 个答案:

答案 0 :(得分:2)

这是因为你的班级extends AppCompatActivity

这些方法来自AppCompatActivity继承。

答案 1 :(得分:0)

这是因为您正在编写的类MainActivity正在扩展类AppCompatActivity。您可以将AppCompatActivity视为一个页面,并将MainActivity粘贴到底部并继续编写。可以像在MainActivity中编写AppCompatActivity中的所有方法一样访问它们,也可以覆盖/覆盖这些现有方法(例如,onCreate是在AppCompatActivity中声明的方法)。所以,由于这些方法属于同一类,"你不需要引用另一个类来调用它们。

答案 2 :(得分:0)

它与继承和超类有关。在必须指定类的实例然后调用方法(例如ExampleClass.exampleMethod();)的情况下,您要从ExampleClass类调用exampleMethod()方法(可能很明显)。如果您没有指定一个类,那么您将从当前类或(重要的)任何超类调用该方法。因为您正在扩展AppCompatActivity,AppCompatActivity是MainActivity的超类,AppCompatActivity(及其任何超类)中声明的公共变量,类和方法将继承到当前类。

查看Java Tutorial以获得更全面的解释。