Getter and setter methods help you safely get and change the values inside an object. They keep data private and controlled.
Getter and setter methods in Java
Start learning this pattern below
Jump into concepts and practice - no test required
or
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
Syntax
Java
public class ClassName { private DataType variableName; public DataType getVariableName() { return variableName; } public void setVariableName(DataType variableName) { this.variableName = variableName; } }
Getters usually start with get and return the variable value.
Setters usually start with set and take a parameter to update the variable.
Examples
name variable.Java
public class Person { private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
Java
public class BankAccount { private double balance; public double getBalance() { return balance; } public void setBalance(double balance) { if (balance >= 0) { this.balance = balance; } } }
Sample Program
This program creates a Car object, sets its color using the setter, and then prints the color using the getter.
Java
public class Car { private String color; public String getColor() { return color; } public void setColor(String color) { this.color = color; } public static void main(String[] args) { Car myCar = new Car(); myCar.setColor("Red"); System.out.println("Car color: " + myCar.getColor()); } }
Important Notes
Always keep variables private to protect data.
Use getters and setters to control how variables are accessed and changed.
You can add checks inside setters to prevent invalid data.
Summary
Getters and setters control access to private data inside objects.
Getters return the value, setters update the value.
They help keep your code safe and easy to manage.
Practice
1. What is the main purpose of getter and setter methods in Java?
easy
Solution
Step 1: Understand the role of getters and setters
Getters and setters are methods used to access and modify private variables safely.Step 2: Identify their purpose in encapsulation
They help protect data by controlling how variables are read or changed from outside the class.Final Answer:
To control access to private variables by reading and updating their values -> Option BQuick Check:
Getters and setters control access [OK]
Hint: Getters read, setters update private variables safely [OK]
Common Mistakes:
- Thinking getters and setters create objects
- Confusing getters/setters with printing methods
- Assuming they perform calculations
2. Which of the following is the correct syntax for a setter method for a private int variable named
age?easy
Solution
Step 1: Identify setter method structure
A setter method is public, returns void, and takes a parameter to update the private variable.Step 2: Check the parameter assignment
The method assigns the parameter value to the instance variable usingthis.age = age;.Final Answer:
public void setAge(int age) { this.age = age; } -> Option CQuick Check:
Setter syntax = public void setVar(Type var) { this.var = var; } [OK]
Hint: Setter methods are void and assign parameter to this.variable [OK]
Common Mistakes:
- Using return type int for setter
- Assigning instance variable to parameter instead of reverse
- Making setter private
3. What will be the output of the following code?
public class Person {
private String name;
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public static void main(String[] args) {
Person p = new Person();
p.setName("Alice");
System.out.println(p.getName());
}
}medium
Solution
Step 1: Trace the setter method call
ThesetNamemethod sets the private variablenameto "Alice".Step 2: Trace the getter method call
ThegetNamemethod returns the value ofname, which is now "Alice".Final Answer:
Alice -> Option AQuick Check:
Setter sets "Alice", getter returns "Alice" [OK]
Hint: Setter sets value, getter returns it [OK]
Common Mistakes:
- Expecting null because variable is private
- Thinking code causes compilation error
- Assuming output is empty line
4. Identify the error in this setter method and choose the correct fix:
public void setScore(int score) {
score = score;
}medium
Solution
Step 1: Understand variable shadowing
The parameterscoreshadows the instance variablescore, soscore = score;assigns parameter to itself.Step 2: Fix assignment using
Usethisthis.score = score;to assign the parameter value to the instance variable.Final Answer:
Usethis.score = score;to assign parameter to instance variable -> Option DQuick Check:
Use this.variable = parameter to fix shadowing [OK]
Hint: Use this.variable to avoid shadowing in setters [OK]
Common Mistakes:
- Assigning parameter to itself
- Changing return type incorrectly
- Making setter private unnecessarily
5. You have a class with a private int field
temperature. You want to ensure the temperature can only be set between 0 and 100. Which setter method correctly enforces this rule?hard
Solution
Step 1: Understand the requirement
The setter must only allow values between 0 and 100 inclusive.Step 2: Analyze each option
public void setTemperature(int temperature) { if (temperature >= 0 && temperature <= 100) this.temperature = temperature; } sets temperature only if in range but does nothing if out of range (temperature remains unchanged). public void setTemperature(int temperature) { if (temperature < 0 || temperature > 100) this.temperature = 0; else this.temperature = temperature; } sets temperature to 0 if out of range, enforcing a default safe value.Step 3: Choose the best enforcement
public void setTemperature(int temperature) { if (temperature < 0 || temperature > 100) this.temperature = 0; else this.temperature = temperature; } actively prevents invalid values by resetting to 0, ensuring temperature is always valid.Final Answer:
public void setTemperature(int temperature) { if (temperature < 0 || temperature > 100) this.temperature = 0; else this.temperature = temperature; } -> Option AQuick Check:
Setter enforces range with else and default value [OK]
Hint: Use if-else to enforce valid range in setter [OK]
Common Mistakes:
- Ignoring invalid values without handling
- Returning int from setter
- Not using else to handle out-of-range values
