What are Packages

Folders for Classes

A package groups related classes, like folders group files. It avoids name clashes (two classes called User in different packages) and controls access (package-private members).

  • Built-in packages: java.lang (auto-imported), java.util, java.io, java.nio.file, java.time.
  • User-defined packages: declared with package as the first statement of the file.
  • Naming convention: reversed domain name, all lowercase: com.careeroza.shop.order.
  • The folder structure must match the package: com/careeroza/shop/order/OrderService.java.

Declaring a Package

// File: src/main/java/com/careeroza/shop/model/Product.java
package com.careeroza.shop.model;

public class Product {
    private final String name;

    public Product(String name) { this.name = name; }

    public String getName() { return name; }
}

Example

Compile and run classes in packages from the project root:

javac -d out src/main/java/com/careeroza/shop/model/Product.java src/main/java/com/careeroza/shop/App.java
java -cp out com.careeroza.shop.App

Example output

Product: Laptop