2013-07-03 62 views
0

说我有:为什么我们需要导入类,如果家长已经导入它

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

public class MyActivity extends Activity { 

    @Override 
    public void onCreate(Bundle b) { 

    } 
} 

,然后我继承了该类这样:

public class MyNewActivity extends MyActivity { 

    @Override 
    public void onCreate(Bundle b) { 

    } 
} 

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

+6

'进口'不会继承。 – GriffeyDog

+0

'它应该已经知道Bundle' - 为什么要这样? 'Bundle'不是MyActivity的成员类。 – Simon

+0

@Simin思想是,由于MyNewActivity已经继承了MyActivity的所有方法,包括方法签名,MyNewActivity将如何显式或隐式地使用'Bundle'? – StackOverflowed

回答

8

在Java中,导入的范围不是声明的类,而是提供导入的文件。所以,在另一个文件中,你仍然必须导入你需要的东西。

按照JLS, Section 7.5

进口报关单只在实际包含 进口报关编译单元使得类型或可用成员通过其简单的 名字。

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

+2

+1。 – Maroun

相关问题