⬅ Previous Topic
Java package KeywordNext Topic ⮕
Java protected Keywordprivate
Keyword⬅ Previous Topic
Java package KeywordNext Topic ⮕
Java protected Keywordprivate
Keyword in JavaIn Java, private
is one of the four access modifiers used to restrict the visibility of classes, methods, and variables. It plays a key role in achieving encapsulation—a fundamental principle of object-oriented programming.
When a member is declared private
, it can only be accessed within the same class. This helps you protect the internal state of an object and prevent external code from directly modifying it.
private
?private
with VariablesMost commonly, you’ll use private
to declare instance variables in a class. This keeps them hidden from other classes.
public class BankAccount {
private double balance;
public void deposit(double amount) {
balance += amount;
}
public double getBalance() {
return balance;
}
}
Here, balance
is declared private
. You can't access it directly from outside the class. Instead, you access it via the public method getBalance()
. This is a textbook example of encapsulation.
BankAccount acc = new BankAccount();
acc.balance = 5000; // Compilation error: balance has private access
private
with MethodsYou might want to make some helper methods private
if they should not be part of the public API.
public class Validator {
public boolean isValidUser(String userId) {
return isInternalUser(userId);
}
private boolean isInternalUser(String userId) {
return userId.startsWith("INT");
}
}
The isInternalUser
method is a private helper that checks a specific logic. It’s not meant to be accessed from outside. Making it private ensures that no external class can call it directly.
Validator v = new Validator();
v.isInternalUser("INT123"); // Error: isInternalUser() has private access
private
with ConstructorsIn rare cases, constructors can also be declared private
—especially in design patterns like Singleton.
public class AppConfig {
private static AppConfig instance = new AppConfig();
private AppConfig() {
// private constructor
}
public static AppConfig getInstance() {
return instance;
}
}
Since the constructor is private, you cannot instantiate AppConfig
using new
from outside the class. The only way to access the instance is through the getInstance()
method. This is how Singleton Pattern works.
AppConfig config = new AppConfig(); // Error: AppConfig() has private access
Let’s compare how access modifiers behave in terms of visibility:
Modifier | Same Class | Same Package | Subclass | Other Classes |
---|---|---|---|---|
private |
✔ | ✖ | ✖ | ✖ |
default (no modifier) |
✔ | ✔ | ✔ (if in same package) | ✖ |
protected |
✔ | ✔ | ✔ | ✖ |
public |
✔ | ✔ | ✔ | ✔ |
private
private
and expose them via getters/setters
.private
and increase only when needed.⬅ Previous Topic
Java package KeywordNext Topic ⮕
Java protected KeywordYou can support this website with a contribution of your choice.
When making a contribution, mention your name, and programguru.org in the message. Your name shall be displayed in the sponsors list.