Package in Java

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.

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:

packages in java

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 .

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();

Now, you can directly compile PackageDemo class using following command:


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.


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.

Notify of
Inline Feedbacks
View all comments