Java Crash Course: Package & Classes
In Java, a package is a namespace that organizes a set of related classes and interfaces. Packages help avoid name conflicts, manage code more efficiently, and control access to classes.
Packages
Definition: A package is a way to group related classes, interfaces, and sub-packages together.
Syntax: The package statement is the first line in a Java source file (if it's not part of the default package). For example:
package com.yadavanuj.github;
Purpose:
Namespace Management: Packages prevent name conflicts. For example, you can have two classes named
Employee
in different packages.Code Organization: Packages help organize large codebases by logically grouping related classes.
Access Control: Packages can control the visibility of classes and methods using access modifiers like
public
,protected
, anddefault
(package-private).
Classes
Definition: A class is a blueprint for creating objects. It encapsulates data (fields) and methods that operate on the data.
Class Declaration:
public class MyClass { // fields private int id; private String name; // constructor public MyClass(int id, String name) { this.id = id; this.name = name; } // methods public void displayInfo() { System.out.println("ID: " + id + ", Name: " + name); } }
Class Access Levels:
Public: Accessible from any other class.
Default (Package-Private): Accessible only within the same package.
Protected: Accessible within the same package and by subclasses.
Using Packages and Classes Together:
Importing Packages: To use classes from another package, you import them using the
import
statement:import com.yadavanuj.github.MyClass;
Importing all classes inside a package: To use all or many classes from another package, you can import them all using
*
:import java.security.*;
Fully Qualified Class Names: Alternatively, you can use the fully qualified name of a class (including its package) without importing:
com.yadavanuj.github.MyClass obj = new com.yadavanuj.github.MyClass();
Common Java Packages:
java.lang: Includes fundamental classes like
String
,System
, andMath
. This package is automatically imported.java.util: Contains utility classes like
ArrayList
,HashMap
, andDate
.java.io: Provides classes for input and output, like
File
,InputStream
, andOutputStream
.java.net: Contains classes for networking, such as
Socket
,URL
, andInetAddress
.
Organizing Classes into Packages
Let's say you're building an application with different modules, such as users
, products
, and orders
. You might organize your classes into packages like this:
com/yadavanuj/github/
├── users/
│ ├── User.java
│ ├── UserService.java
├── products/
│ ├── Product.java
│ ├── ProductService.java
├── orders/
│ ├── Order.java
│ ├── OrderService.java
Usage in the same package
We do not need to import
package
when components (Class
, Enum
Interface
, etc.) are in the same package
.
User.java
package com.yadavanuj.github.users;
public class User {
private String username;
private String email;
// constructor, getters, setters, etc.
}
UserService.java
package com.yadavanuj.github.users;
public class UserService {
public void registerUser(User user) {
// registration logic
}
}
"Enjoyed this post? Hit like and share to spread the word—your support fuels our creativity!"