我在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 :(得分:2)
您正在做的是创建一个匿名类。该类将扩展OnClickListener
,因此它将继承其所有行为。在这种情况下,OnClickListener
是一个接口,因此您要创建一个实现该接口的类。
执行此操作时,只有该实例具有该行为,因此您可以使用另一个onClick方法创建另一个实例,并且每个实例都会执行不同的操作。
您可以阅读有关Annonymous课程here
的更多信息答案 1 :(得分:1)
您正在搜索的正确术语是“匿名类” - 您可以“动态”创建一个类而无需命名并将其保存在文件中。在抽象类/接口的情况下,您还必须提供所有抽象方法的实现。