com
└── myCompany
└── A class
com
└── otherCompany
└── A class
Even though both classes are named "A", since they are in different packages, the compiler recognizes them as individual classes.
_, and $javaAllows the use of classes from different packages.
We can either specify the class that we want to import or use wildcard(*) selection to import ALL classes in the given package.
import com.company.ClassName; // <- specific
import com.company.*; // <- wildcard import
In package01:
package package01;
class A {
}
public class B {
A a; // Accessible because A is in the same package
public static void foo() {
System.out.println("foo");
}
}
In package02:
package package02;
public class C {
public static void main(String[] args) {
B b = new B();
b.foo(); // Accessible because foo() is public
}
}
foo() was private: In package01:
package package01;
public class B {
A a; // Accessible because A is in the same package
private static void foo() {
System.out.println("foo");
}
}
In package02:
package package02;
public class C {
public static void main(String[] args) {
B b = new B();
b.foo(); // Not accessible because foo() is private
}
}
public, defaultpublic, default, private, protectedpublic, default, private, protectedpublic, default, private, protectedpublic > protected > default > private