如果父级已经导入了类,为什么我们需要导入一个类

Sta*_*wed 1 java inheritance android

说我有:

import android.os.Bundle;
import android.app.Activity;

public class MyActivity extends Activity {

    @Override
    public void onCreate(Bundle b) {

    }
}
Run Code Online (Sandbox Code Playgroud)

然后我扩展那个类:

public class MyNewActivity extends MyActivity {

    @Override
    public void onCreate(Bundle b) {

    }
}
Run Code Online (Sandbox Code Playgroud)

如果我不包括import android.os.Bundle;那么MyNewActivity类将不会编译,但它应该已经知道,Bundle因为父类已经导入它.是什么赋予了?

rge*_*man 8

在Java中,导入的范围不是声明的类,而是导入的文件.因此,在另一个文件中,您仍必须导入所需内容.

根据JLS,第7.5节,

导入声明仅在实际包含导入声明的编译单元中通过其简单名称使类型或成员可用.

也就是说,导入的范围是它所在的文件.