父包类可以从java中的子包类访问?

在从父包装类可访问的java父包类中? 请解释我任何一个?

示例包A.A1.A2包含类子包A包含类sup

无论如何从sub访问sup?

请解释一下。

我试过导入它将无法工作示例:在程序目录结构之前,package1包含package1.java – > package2 – > package3包含PCheck.java

//package1.java package package1; public class package1{ public static void main(String[] args) { } } class phelo{ phelo(){ int a; System.out.println("hai fun freom package 1"); } } //PCheck.java; package package1.package2.package3; import package1.*; //to import package1.java public class PCheck { public static void main(String[] args) { phelo obj=new phelo(); } } class helo{ helo(){ int a; System.out.println("hai fun from package 3"); } } 

输出:编译时错误:包package1.package2.package3不存在;

对于从不同目录导入类我们使用import语句但是在这里我们需要从subpackage.i访问父包尝试导入它将无法工作pls解释一个例子。

Java无法识别子包的概念。 就Java而言,包aababc是无关的。 它们只是名字。

因此,如果要从abcSomeOtherClass访问abSomeClass ,则必须使用完全限定的类名,或者向SomeeOtherClass添加import

在从父包装类可访问的java父包类中? 请解释我任何一个?

不是你想的那样。 目录是分层的,但包只是区分名称。

如果子项需要父包或其层次结构之外的任何其他包,则只需要导入它。

这就是为什么import foo.*不允许您访问所有子包名称 – 包不像目录那样是分层的。

在abcSomeOtherClass的对象中:

 List tmp=new ArrayList(Arrays.asList(this.getClass().getPackage().getName().split("\\."))); tmp.remove(tmp.size()-1); String parent_package_name=tmp.toString().replace(", ", ".").replaceAll("[\\[\\]]", ""); Class cls=Class.forName(parent_package_name+".SomeClass"); 

只需导入它:

 import A.sup; 

默认类只能在包中使用, 子包除外