【发布时间】:2016-10-29 19:59:53
【问题描述】:
我是 android 和 java 的新手,我无法理解为什么在 android 中有时使用“this”关键字而不是“super”?
还有如何在没有“this”或“super”关键字的情况下调用父方法。
例如,假设我们有
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void sendMessage(View view) {
Intent intent = new Intent(this, DisplayMessageActivity.class);
EditText editText = (EditText) findViewById(R.id.edit_message);
String message = editText.getText().toString();
intent.putExtra(EXTRA_MESSAGE, message);
this.startActivity(intent);
}
我们可以看到在上面的例子中 MainActivety 类没有 setContentView 方法实际上这个方法是在 ActionBarActivity 中定义的
public void setContentView(int layoutResID) {
this.getDelegate().setContentView(layoutResID);
}
那么我们如何在没有“this”或“super”的情况下调用它?
尽管方法是在父类中定义的,但为什么我们将“this”放在前面仍然有效,而不是“this”关键字用于当前范围/类。
【问题讨论】:
-
子类型的表达式始终可以访问可访问的超类型方法。
-
基本 OOP 教程应该可以回答所有这些问题。
标签: java android inheritance