刚刚开始使用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类中声明具有相同名称的方法有什么意义呢?
感谢您的任何澄清。
发布于 2011-09-09 15:11:13
在普通的Java中,onCreate是一种main(String[] args)函数。这是你设置代码的地方。
发布于 2011-09-09 15:24:35
在您的示例中,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”。
发布于 2011-09-09 15:08:16
您正在创建一个继承自Activity的类;但是您必须定义它的行为,因此您在创建时告诉您的类调用基类来完成所有必须完成的事情(super.onCreate()),然后设置您的布局以显示您的屏幕/应用程序(setContentView())。
还有一件事:看看在public void onCreate(Bundle savedInstanceState):override之前定义的@Override:override意味着您正在扩展基本方法,让您的派生类完成基本方法的所有工作,包括(在)您的逻辑之后。
https://stackoverflow.com/questions/7358219
复制相似问题