Bird
Raised Fist0
Javaprogramming~20 mins

Private data members in Java - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
πŸŽ–οΈ
Private Data Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of accessing private data member directly
What will be the output of the following Java code?
Java
class Person {
    private String name = "Alice";
}

public class Main {
    public static void main(String[] args) {
        Person p = new Person();
        System.out.println(p.name);
    }
}
ACompilation error
Bnull
CAlice
DRuntime error
Attempts:
2 left
πŸ’‘ Hint
Private members cannot be accessed directly outside their class.
❓ Predict Output
intermediate
2:00remaining
Output when accessing private member via getter
What will be the output of this Java program?
Java
class Person {
    private String name = "Bob";
    public String getName() {
        return name;
    }
}

public class Main {
    public static void main(String[] args) {
        Person p = new Person();
        System.out.println(p.getName());
    }
}
ABob
Bnull
CCompilation error
DRuntime error
Attempts:
2 left
πŸ’‘ Hint
Private members can be accessed inside the class and exposed via public methods.
❓ Predict Output
advanced
2:00remaining
Effect of private data member shadowing
What is the output of this Java code?
Java
class Animal {
    private String type = "Animal";
    public String getType() {
        return type;
    }
}

class Dog extends Animal {
    private String type = "Dog";
    public String getType() {
        return type;
    }
}

public class Main {
    public static void main(String[] args) {
        Animal a = new Dog();
        System.out.println(a.getType());
    }
}
AAnimal
BDog
CCompilation error
DRuntime error
Attempts:
2 left
πŸ’‘ Hint
Method overriding works even if private fields are shadowed.
πŸ”§ Debug
advanced
2:00remaining
Identify the error with private data member access
Which option correctly identifies the error in this code snippet?
Java
class Car {
    private int speed;
    public void setSpeed(int speed) {
        speed = speed;
    }
    public int getSpeed() {
        return speed;
    }
}

public class Main {
    public static void main(String[] args) {
        Car c = new Car();
        c.setSpeed(50);
        System.out.println(c.getSpeed());
    }
}
AThe code will not compile because 'speed' is private.
BThe private field 'speed' cannot be accessed in getSpeed method.
CThe setSpeed method does not set the private field 'speed' because of variable shadowing.
DThe setSpeed method should be static to modify 'speed'.
Attempts:
2 left
πŸ’‘ Hint
Look at the assignment inside setSpeed method.
🧠 Conceptual
expert
2:00remaining
Why use private data members in Java?
Which option best explains the main reason for declaring data members as private in Java?
ATo improve the performance of the program by hiding data.
BTo make the data members accessible only within the same package.
CTo allow subclasses to access the data members directly.
DTo prevent other classes from accessing or modifying the data directly, ensuring controlled access.
Attempts:
2 left
πŸ’‘ Hint
Think about encapsulation and data protection.

Practice

(1/5)
1. What is the main purpose of declaring data members as private in a Java class?
easy
A. To allow direct modification of data from other classes
B. To hide the data from outside access and protect it
C. To make the data accessible from anywhere
D. To make the data static and shared

Solution

  1. Step 1: Understand private keyword meaning

    The private keyword restricts access to the data member only within the class it is declared.
  2. Step 2: Purpose of data hiding

    Hiding data prevents outside code from changing it directly, which protects the data integrity.
  3. Final Answer:

    To hide the data from outside access and protect it -> Option B
  4. Quick Check:

    Private means hidden and protected [OK]
Hint: Private means only inside class can access it [OK]
Common Mistakes:
  • Thinking private allows access from other classes
  • Confusing private with public or protected
  • Assuming private makes data static
2. Which of the following is the correct way to declare a private integer variable named age inside a Java class?
easy
A. private int age;
B. int private age;
C. private integer age;
D. int age private;

Solution

  1. Step 1: Check Java syntax for private variables

    The correct order is the access modifier first, then the type, then the variable name.
  2. Step 2: Validate each option

    private int age; follows the correct syntax: private int age;. Others have wrong order or wrong type keyword.
  3. Final Answer:

    private int age; -> Option A
  4. Quick Check:

    Access modifier + type + name [OK]
Hint: Access modifier comes before type and name [OK]
Common Mistakes:
  • Placing 'private' after the type
  • Using 'integer' instead of 'int'
  • Incorrect order of keywords
3. What will be the output of the following Java code?
class Person {
  private String name = "Alice";
  public String getName() {
    return name;
  }
}
public class Test {
  public static void main(String[] args) {
    Person p = new Person();
    System.out.println(p.getName());
  }
}
medium
A. Compilation error
B. null
C. Alice
D. Runtime error

Solution

  1. Step 1: Understand private variable access

    The variable name is private but accessed via the public method getName().
  2. Step 2: Trace the method call and output

    The method returns "Alice", so System.out.println prints "Alice".
  3. Final Answer:

    Alice -> Option C
  4. Quick Check:

    Private data accessed via public method returns value [OK]
Hint: Use public methods to access private data [OK]
Common Mistakes:
  • Expecting direct access to private variable
  • Thinking private variable is null by default
  • Assuming compilation error due to private access
4. Identify the error in the following Java code snippet:
class Car {
  private int speed;
  public void setSpeed(int speed) {
    speed = speed;
  }
  public int getSpeed() {
    return speed;
  }
}
medium
A. The setter method does not update the private variable
B. The private variable speed should be public
C. The getter method should return void
D. The class Car should be declared public

Solution

  1. Step 1: Analyze the setter method

    The setter method assigns the parameter speed to itself, not to the private variable.
  2. Step 2: Understand variable shadowing

    The parameter speed shadows the private variable. To update the private variable, use this.speed = speed;.
  3. Final Answer:

    The setter method does not update the private variable -> Option A
  4. Quick Check:

    Use 'this' to update private variable in setter [OK]
Hint: Use 'this.' to refer to class variable in setters [OK]
Common Mistakes:
  • Not using 'this' keyword in setter
  • Making private variable public unnecessarily
  • Changing getter return type incorrectly
5. You want to keep a private list of student names inside a class and allow adding names but prevent direct access to the list. Which approach correctly uses private data members and methods?
hard
A. Declare public List<String> students; allow direct access and modification.
B. Declare private List<String> students; no methods to add or access students.
C. Declare private List<String> students; provide public getStudents() returning the list directly.
D. Declare private List<String> students; provide public addStudent(String name) method; no public getter for the list.

Solution

  1. Step 1: Understand data hiding and controlled access

    Private list hides data; public method to add controls how data changes.
  2. Step 2: Evaluate options for safe access

    Declare private List<String> students; provide public addStudent(String name) method; no public getter for the list. hides list and allows adding names safely. Declare public List<String> students; allow direct access and modification. exposes list directly, unsafe. Declare private List<String> students; provide public getStudents() returning the list directly. exposes list directly via getter, unsafe. Declare private List<String> students; no methods to add or access students. provides no way to add or access data.
  3. Final Answer:

    Declare private List<String> students; provide public addStudent(String name) method; no public getter for the list. -> Option D
  4. Quick Check:

    Private data + public methods for controlled access [OK]
Hint: Use private list + public add method, no direct getter [OK]
Common Mistakes:
  • Making list public and exposing internal data
  • Returning private list directly allowing modification
  • Not providing any method to modify or access data