Skip to main content
Documents
Share
LinkedIn
Facebook
Twitter
Copy
Java keywords

private Keyword in Java

The private keyword in Java is an access modifier used to restrict the visibility of fields, methods, and constructors to the defining class. This encapsulation mechanism helps in protecting the internal state of an object and promotes data hiding.

Usage

The private access modifier ensures that the members (fields, methods, constructors) of a class are only accessible within the same class. It is commonly used to enforce encapsulation and prevent unauthorized access from outside the class.

Syntax

class ClassName {
    private dataType fieldName;
    
    private returnType methodName() {
        // method body
    }
}
  • dataType fieldName: Declaration of a private field.
  • returnType methodName(): Declaration of a private method.

Examples

Example 1: Private Field

public class Person {
    private String name;
    
    public void setName(String name) {
        this.name = name;
    }
    
    public String getName() {
        return name;
    }
}

In this example, the name field is declared as private, meaning it cannot be accessed directly from outside the Person class. The setName and getName methods provide controlled access to this field.

Example 2: Private Method

public class Calculator {
    public int add(int a, int b) {
        return a + b;
    }
    
    private int subtract(int a, int b) {
        return a - b;
    }
    
    public int performSubtraction(int a, int b) {
        return subtract(a, b);
    }
}

Here, the subtract method is private and can only be called within the Calculator class. The performSubtraction method provides a public interface to use the subtract method.

Example 3: Private Constructor

public class Singleton {
    private static Singleton instance;
    
    private Singleton() {
        // private constructor
    }
    
    public static Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}

This example demonstrates a singleton pattern where the constructor is private, ensuring that only one instance of the Singleton class can be created. The getInstance method provides a way to access the single instance.

Tips and Best Practices

  • Encapsulation: Use private to encapsulate the internal state of a class and expose only necessary methods to interact with that state.
  • Controlled Access: Provide public getter and setter methods to control how private fields are accessed and modified.
  • Immutable Classes: For immutable classes, make fields private and final, and avoid providing setters.
    public class ImmutableClass {
        private final int value;
        
        public ImmutableClass(int value) {
            this.value = value;
        }
        
        public int getValue() {
            return value;
        }
    }
  • Security: Use private to hide sensitive methods and data that should not be exposed to other classes.
  • Singleton Pattern: In singleton patterns, use a private constructor to prevent direct instantiation of the class.