父包类可以从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而言,包a
和ab
与abc
是无关的。 它们只是名字。
因此,如果要从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;
默认类只能在包中使用, 但子包除外