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
A. Alice
B. null
C. Compilation error
D. Empty line
Solution
Step 1: Trace the setter method call
The setName method sets the private variable name to "Alice".
Step 2: Trace the getter method call
The getName method returns the value of name, which is now "Alice".
Final Answer:
Alice -> Option A
Quick 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
A. Remove parameter from method
B. Change method return type to int
C. Make method private
D. Use this.score = score; to assign parameter to instance variable
Solution
Step 1: Understand variable shadowing
The parameter score shadows the instance variable score, so score = score; assigns parameter to itself.
Step 2: Fix assignment using this
Use this.score = score; to assign the parameter value to the instance variable.
Final Answer:
Use this.score = score; to assign parameter to instance variable -> Option D
Quick 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
A. public void setTemperature(int temperature) { if (temperature < 0 || temperature > 100) this.temperature = 0; else this.temperature = temperature; }
B. public void setTemperature(int temperature) { this.temperature = temperature; }
C. public int setTemperature(int temperature) { if (temperature > 0) this.temperature = temperature; return temperature; }
D. public void setTemperature(int temperature) { if (temperature >= 0 && temperature <= 100) this.temperature = temperature; }
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 A
Quick 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
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.