</>

Technology

Core Java

Difficulty

Beginner

Interview Question

What are access modifiers in Java? Explain with examples.

Answer

Access Modifiers in Java

Access modifiers control the visibility and accessibility of classes, methods, constructors, and fields.

The 4 Access Modifiers

ModifierSame ClassSame PackageSubclassEverywhere
private
default (none)
protected
public

1. private — Most Restrictive

Only accessible within the same class.

Java
public class Employee {
    private String salary;   // only this class can access

    private void calculateBonus() { ... }  // private method

    public String getSalary() {
        return salary;   // public getter exposes private field safely
    }
}

2. default (no keyword) — Package-Private

Accessible within the same package only.

Java
class DatabaseConfig {         // no modifier = default
    String connectionUrl;      // default field

    void connect() { ... }    // default method
}
// Accessible only within same package

3. protected — Package + Subclasses

Accessible in same package AND in subclasses (even in different packages).

Java
public class Vehicle {
    protected int speed;       // accessible to subclasses

    protected void accelerate() {
        speed += 10;
    }
}

public class Car extends Vehicle {
    public void drive() {
        accelerate();   // ✅ can access protected method from parent
        speed = 60;     // ✅ can access protected field
    }
}

4. public — Most Open

Accessible from anywhere — any class, any package.

Java
public class MathUtils {
    public static int add(int a, int b) {
        return a + b;
    }
}
// Any class anywhere can call MathUtils.add(2, 3)

Best Practices (Encapsulation)

Java
public class User {
    private String username;    // private field
    private String password;    // private field

    public String getUsername() { return username; }    // public getter
    public void setUsername(String u) { this.username = u; }  // public setter

    // No getter/setter for password — intentionally hidden
    public boolean authenticate(String input) {
        return this.password.equals(input);
    }
}

In Automation Frameworks

Java
public class BasePage {
    protected WebDriver driver;     // subclasses (LoginPage, HomePage) can use it
    private String baseUrl;         // only BasePage needs this

    public void openUrl(String url) { driver.get(url); }  // public for tests
}

Follow AutomateQA

Related Topics