Package in Java is used to group related classes and interfaces together and provide a way to manage their access levels. Package in Java helps developers organize their code, making it easier to reuse and maintain.
Table of Contents
Advantages of package in Java
The main advantages of package in Java are:
- Organization: Packages help to organize classes and interfaces into logical groups. This makes it easier to find and understand the code, and it also helps to prevent naming conflicts.
- Access control: Packages can be used to control access to classes and interfaces. This can help to protect sensitive data and to prevent unauthorized modifications to the code.
- Reusability: Packages can be reused by other developers. This can save time and effort, and it can also help to ensure that the code is consistent.
- Naming Conflicts: Package in Java prevent naming conflicts by allowing classes with the same name to coexist in different packages.
How to define package in Java?
To define a package in Java, we can use the package keyword followed by the name of the package. For example, to create a package called com.codersathi
, we can use the following code:
package com.codersathi;
// package contents go here
How to import package in Java?
To import a package Java code, we can use the import
keyword followed by the name of the package. For example, to import the com.codersathi
package, we can use the following code:
import com.codersathi.*;
This will import all the classes and interfaces in the com.codersathi
package. Alternatively, we can import a specific class or interface by specifying its fully qualified name, like this:
import com.codersathi.MyClass;
In Java, there are four levels of access control: private
, default
, protected
, and public
.
private
access is the most restrictive, allowing access only within the class where the member is defined.default
access allows access within the package, but not from outside the package.protected
access allows access within the package and also from subclasses, even if they are in a different package.public
access allows access from anywhere.
By using access control, we can control the visibility and accessibility of our code, preventing unintended modification or misuse. This helps to ensure the integrity and stability of our application.
Following is an example of a Java class that uses a package and access control:
package com.codersathi;
public class MyClass {
private int privateField;
int defaultField;
protected int protectedField;
public int publicField;
private void privateMethod() {
// code goes here
}
void defaultMethod() {
// code goes here
}
protected void protectedMethod() {
// code goes here
}
public void publicMethod() {
// code goes here
}
}
The class called MyClass
, is part of the com.codersathi
package and has four fields and four methods, each with a different level of access control.
The privateField
and privateMethod
can only be accessed within the MyClass
class, while the defaultField
and defaultMethod
can be accessed within the com.
codersathi package.
The protectedField
and protectedMethod
can be accessed within the com.codersathi
package and also by subclasses of MyClass
, even if they are in a different package.
Finally, the publicField
and publicMethod
can be accessed from anywhere.
How to compile code with package in Java?
Before going directly to the compilation syntax, first, we need to understand how the code is written with the help of the following code structure:
Let’s create a class like the one below:
package com.codersathi;
public class PackageExample{
public String name="Coder Sathi";
}
The PackageExample
class is saved under the folder com.codersathi
.
Now, to compile this class go to the directory where the folder com
is there.
And use the command below:
javac -d . PackageExample.java
This command should compile the class.
Now, let’s learn how to use this class in another class.
Create a main class in the default location.
import com.codersathi.*;
public class PackageDemo{
public static void main(String[] args){
PackageExample pe = new PackageExample();
System.out.println(pe.name);
}
}
Now, you can directly compile PackageDemo class using following command:
javac PackageDemo.java
Important information
If you are using an IDE like Eclipse, Netbeans or IntelliJ then you don’t need to worry about compiling these classes but while using command line then you must follow the steps given here.
FAQs
What’s the purpose of the default package in Java?
The default package in Java is a package with no specified name. It’s generally recommended not to use the default package for the classes because it can lead to naming conflicts and isn’t considered good practice for organizing code. It’s better to create named packages for the classes.
Can classes from the same package access each other without importing?
Yes, classes within the same package can access each other without needing to import them explicitly. Java allows package-private (default) access, which means classes within the same package can access each other’s members (fields and methods) without restrictions.