创建实例时覆盖方法?

时间:2014-02-15 23:52:03

标签: java android

我在onCreate()方法中查看了这个例子:

protected void onCreate(Bundle savedInstanceState) {

    Button launchActivityTwoButton = (Button) findViewById(R.id.bLaunchActivityTwo); 
    launchActivityTwoButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            Intent activityTwoIntent = new Intent(v.getContext(), ActivityTwo.class);
            startActivity(activityTwoIntent);

        }
    });
}

当创建OnClickListener的实例时,对构造函数的调用还包括对onClick()方法的覆盖?对于这是什么,有一个正确的术语吗?此外,在创建实例时重写方法时,方法覆盖是否仅适用于该特定实例?

2 个答案:

答案 0 :(得分:2)

您正在做的是创建一个匿名类。该类将扩展OnClickListener,因此它将继承其所有行为。在这种情况下,OnClickListener是一个接口,因此您要创建一个实现该接口的类。

执行此操作时,只有该实例具有该行为,因此您可以使用另一个onClick方法创建另一个实例,并且每个实例都会执行不同的操作。

您可以阅读有关Annonymous课程here

的更多信息

答案 1 :(得分:1)

您正在搜索的正确术语是“匿名类” - 您可以“动态”创建一个类而无需命名并将其保存在文件中。在抽象类/接口的情况下,您还必须提供所有抽象方法的实现。