刚刚开始使用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);
}
}
Run Code Online (Sandbox Code Playgroud)
这里声明onCreate()方法的目的是什么:
public void onCreate(Bundle savedInstanceState) {
Run Code Online (Sandbox Code Playgroud)
然后使用super在这里调用onCreate()方法:
super.onCreate(savedInstanceState);
Run Code Online (Sandbox Code Playgroud)
这是不是意味着你从Activity类而不是HelloAndroidActivity类调用onCreate()方法?如果是这样,在HelloAndroidActivity类中声明具有相同名称的方法有什么意义?
谢谢你的任何澄清.
lc.*_*lc. 15
在您的示例中,HelloAndroidActivity
是一个继承自的类Activity
.然后,您将覆盖基类(Activity
)的onCreate
方法.当您在派生类中使用与基类中的现有方法相同的签名定义方法时,会发生覆盖.这意味着当我调用onCreate
一个实例时HelloAndroidActivity
,我将执行该HelloAndroidActivity
版本,而不是基类(Activity
)的版本.
super.OnCreate(savedInstanceState)
重写版本中的指令显式调用基类的方法版本.这意味着你想HelloAndroidActivity.onCreate
先执行基类的实现,然后再运行一些代码.
以下示例来说明此行为(假设该方法Output
只是向屏幕输出内容):
1.
class A
{
public void DoSomething()
{
Output("A");
}
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,调用A.DoSomething()
将输出"A".
2.
假设我们仍然具有A
上面定义的类,以及以下内容:
class B extends A
{
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,调用B.DoSomething()
也将输出"A".
3.
假设我们仍然具有A
上面定义的类,而是以下内容:
class B extends A
{
@Override
public void DoSomething()
{
Output("B");
}
}
Run Code Online (Sandbox Code Playgroud)
现在,调用B.DoSomething()
将输出"B".
4.
假设我们仍然A
按上面定义的类,现在改为:
class B extends A
{
@Override
public void DoSomething()
{
super.DoSomething();
Output("B");
}
}
Run Code Online (Sandbox Code Playgroud)
现在,调用B.DoSomething()
将输出"A"然后输出"B".
归档时间: |
|
查看次数: |
3981 次 |
最近记录: |