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
Data hiding
π Scenario: You are creating a simple Java program to store and protect a person's private information, like their name and age. You want to make sure this information cannot be changed directly from outside the class.
π― Goal: Build a Java class that hides its data using private variables and provides public methods to access and update the data safely.
π What You'll Learn
Create a class called Person with private variables name and age
Add public getter methods getName() and getAge() to access the private variables
Add public setter methods setName(String name) and setAge(int age) to update the private variables
Use the setter methods to update the data and getter methods to print the data
π‘ Why This Matters
π Real World
Data hiding is used in real applications to protect sensitive information and control how data is accessed or changed.
πΌ Career
Understanding data hiding is essential for writing secure and maintainable code in software development jobs.
Progress0 / 4 steps
1
Create the Person class with private variables
Create a class called Person with two private variables: String name and int age.
Java
Hint
Use the private keyword before the variable types to hide them.
2
Add public getter methods
Add two public methods: getName() that returns name and getAge() that returns age.
Java
Hint
Getter methods return the value of the private variables.
3
Add public setter methods
Add two public methods: setName(String name) to set the name variable and setAge(int age) to set the age variable.
Java
Hint
Setter methods update the private variables using this keyword.
4
Create a main method to test data hiding
Create a Main class with a main method. Inside it, create a Person object, use setName("Alice") and setAge(30) to set data, then print the name and age using getName() and getAge().
Java
Hint
Create a Person object, set the name and age, then print them using the getter methods.
Practice
(1/5)
1. What is the main purpose of data hiding in Java?
easy
A. To keep class variables private and protect them from outside access
B. To make all variables public for easy access
C. To hide methods from the user interface
D. To encrypt data before storing it
Solution
Step 1: Understand data hiding concept
Data hiding means keeping variables private inside a class to prevent direct access from outside.
Step 2: Identify the purpose
This protects data from unwanted changes and bugs by controlling access through methods.
Final Answer:
To keep class variables private and protect them from outside access -> Option A
Quick Check:
Data hiding = keeping variables private [OK]
Hint: Data hiding means making variables private [OK]
Common Mistakes:
Thinking data hiding means encrypting data
Confusing data hiding with making variables public
Believing data hiding hides methods from UI
2. Which of the following is the correct way to declare a private variable in a Java class?
easy
A. int age;
B. public int age;
C. protected int age;
D. private int age;
Solution
Step 1: Recall Java access modifiers
Private variables are declared with the keyword private to restrict access.
Step 2: Identify correct syntax
Only private int age; correctly declares a private variable.
Final Answer:
private int age; -> Option D
Quick Check:
Private variable = private keyword [OK]
Hint: Use 'private' keyword to hide variables [OK]
Common Mistakes:
Using public or protected instead of private
Omitting access modifier defaults to package-private
Confusing private with protected
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. null
B. Compilation error
C. Alice
D. Runtime error
Solution
Step 1: Understand private variable access
The variable name is private but accessed via the public getter getName().
Step 2: Trace the output
The getter returns "Alice", so System.out.println prints "Alice".
Final Answer:
Alice -> Option C
Quick Check:
Getter returns private value = Alice [OK]
Hint: Private data accessed via public getter returns value [OK]
Common Mistakes:
Expecting direct access to private variable
Thinking code causes compilation error
Confusing output with null or error
4. Identify the error in this code related to data hiding:
class BankAccount {
private double balance;
public void setBalance(double balance) {
balance = balance;
}
public double getBalance() {
return balance;
}
}
medium
A. The setter method does not update the private variable
B. The getter method should be private
C. The balance variable should be public
D. The class should not have a setter method
Solution
Step 1: Analyze setter method
The setter uses balance = balance; which assigns the parameter to itself, not the class variable.
Step 2: Identify correct assignment
It should use this.balance = balance; to update the private variable.
Final Answer:
The setter method does not update the private variable -> Option A
Quick Check:
Setter must update class variable using 'this' [OK]
Hint: Use 'this' to assign parameter to class variable [OK]
Common Mistakes:
Forgetting 'this' keyword in setter
Making getter private by mistake
Changing variable access to public unnecessarily
5. You want to protect a class's sensitive data but allow controlled updates only if the new value is positive. How would you implement this using data hiding in Java?
hard
A. Make the variable public and check the value before assigning it outside the class
B. Make the variable private and write a setter that updates only if the value is positive
C. Make the variable protected and allow direct access in subclasses
D. Use a public variable and no setter method
Solution
Step 1: Use private variable for data hiding
Keep the sensitive variable private to prevent direct external access.
Step 2: Implement setter with condition
Write a setter method that updates the variable only if the new value is positive, ensuring controlled updates.
Final Answer:
Make the variable private and write a setter that updates only if the value is positive -> Option B