刚开始接触 Android 开发和 Java。所以,这是我正在使用的代码:
package com.example.helloandroid;
import android.app.Activity;
import android.os.Bundle;
public class HelloAndroidActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
这里声明onCreate()方法的目的是什么:
public void onCreate(Bundle savedInstanceState) {
然后在这里使用super调用onCreate()方法:
super.onCreate(savedInstanceState);
这是否意味着您是从 Activity 类而不是 HelloAndroidActivity 类调用 onCreate() 方法?如果是这样,在 HelloAndroidActivity 类中声明一个同名方法有什么意义?
感谢任何澄清。
最佳答案
在您的示例中,HelloAndroidActivity
是一个继承自 Activity
的类。然后您将覆盖基类 (Activity
) 的 onCreate
方法。当您在派生类中定义与基类中现有方法具有相同签名的方法时,就会发生覆盖。这意味着当我在 HelloAndroidActivity
的实例上调用 onCreate
时,我将执行 HelloAndroidActivity
版本,不基类 (Activity
) 的版本。
覆盖版本中的指令 super.OnCreate(savedInstanceState)
是显式调用基类版本的方法。这意味着您希望 HelloAndroidActivity.onCreate
首先执行基类的实现,然后再运行一些代码。
通过以下示例来说明此行为(假设方法 Output
只是向屏幕输出一些内容):
1.
class A
{
public void DoSomething()
{
Output("A");
}
}
在这种情况下,调用 A.DoSomething()
将输出“A”。
2.
假设我们仍然有如上定义的类 A
,以及以下内容:
class B extends A
{
}
在这种情况下,调用 B.DoSomething()
也会输出“A”。
3.
假设我们仍然有如上定义的类 A
,并且改为:
class B extends A
{
@Override
public void DoSomething()
{
Output("B");
}
}
现在,调用 B.DoSomething()
将输出“B”。
4.
假设我们仍然有如上定义的类 A
,现在改为:
class B extends A
{
@Override
public void DoSomething()
{
super.DoSomething();
Output("B");
}
}
现在,调用 B.DoSomething()
将输出“A”,然后是“B”。
关于android - 菜鸟关于 "Hello World"Android教程的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7358219/