开发者

parent package class accessible from child packge class in java?

In java parent package class accessible from child packge class? please explain me any one?

example package A.A1.A2 contains class sub package A contains class sup

Is there anyway to access sup from sub?

pls explain.

i tried import it won't work Example: before the program Directory Structure is package1 contains package1.java --> package2 --> package3 contains 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");
    }
}

output: compile time error:package package1.package2.package3 doesnot exist;

for import class from different directory we use import statements but here we need access parent package from subpackage.i tried import it 开发者_如何学运维won't work pls explain with an example.


Java does not recognize the notion of a subpackage1. As far as Java is concerned packages a and a.b and a.b.c are unrelated. They are just names.

So, if you want to access a.b.SomeClass from a.b.c.SomeOtherClass, you must either use a fully qualified class name, or add an import to SomeOtherClass

1 - From Java 9 onwards you can use modules to implement abstraction boundaries that are larger than a single package. This doesn't address this question which is about package-private access, but it could be viewed as an alternative to package-private.


As for your example that doesn't compile, I think we need a proper MCVE to understand that. My guess is that you have gotten the file organization for your source tree wrong ...

It is also possible that the problem is that the visibility of the class you are trying to import is wrong (package private), but that wouldn't cause the compiler to say that the package doesn't exist, like you said it does.


In java parent package class accessible from child packge class? please explain me any one?

Not the way you're thinking. The directories are hierarchical, but the packages are just distinguishing names.

If a child needs a parent package, or any other outside its hierarchy, it simply needs to import it.

That's why import foo.* doesn't give you access to all sub-package names - packages aren't hierarchical the way directories are.


All answers seem to miss OP's point on package class as everyone seem to suggest importing the class as a workaround.

The answer is: package-level classes (i.e., without explicit access level modifier), are visible ONLY for the EXACT same package.

https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

If a class has no modifier (the default, also known as package-private), it is visible only within its own package

This effectively means that neither parent/child/external packages can view the class.


In object of a.b.c.SomeOtherClass:

List<String> tmp=new ArrayList<String>(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");


Simply import it:

import A.sup;


Yes I have encountered the same error whenever I tried to access a class in the same package of the source file or the parent package of the source file it is generating a compiled time error , so by trial and error method I came to the conclusion that the packages are not built in a way to support main methods in the classes and they are not built in a way to support importing their parent packages or child packages


default class can be only used within package except subpackage

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜