Careeroza
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
packageas 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.AppExample output
Product: Laptop