2014-02-15 76 views
0

我看这个例子中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()方法?对于这是什么有一个正确的术语?另外,当您在创建实例时重写该方法时,方法重写仅适用于该特定实例吗?

+0

OnClickListener是接口,所以当你做它的实例或实现它必须实现自己的方法 –

回答

2

你在做什么就是创建一个匿名类。该类将延伸OnClickListener,所以它将继承它的所有行为。在这种情况下,OnClickListener是一个接口,所以您正在创建一个实现该接口的类。

当你这样做时,只有那个实例会有这种行为,所以你可以用另一个onClick方法创建另一个,并且它们每个都会做不同的事情。

你可以阅读更多关于Annonymous类here

1

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