android - 菜鸟关于 "Hello World"Android教程的问题

标签 android

刚开始接触 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/

相关文章:

java - Android 没有选择 facebook 显示图像

android - 辅助功能 : TYPE_NOTIFICATION_STATE_CHANGED state

android - 调试时失去与设备的连接

java - 在 Java/Android 中,为什么我能够从 ParcelFileDescriptor 获取整数文件描述符?

如果执行者在 Web 服务上获取 Android Activity 就会死掉

android - 如何从可绘制的谷歌地图标记中选择不同的图标?

android - 无法从android studio上的github导入项目

java - 如何使用 DataOutPutStream 正确发送 http post 请求以便服务器可以处理它

android - ListActivity 与 ListView

android - 使用 FragmentActivity 永远不会显示选项菜单