Bird
Raised Fist0
Javaprogramming~10 mins

Getter and setter methods in Java - Step-by-Step Execution

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
Concept Flow - Getter and setter methods
Create private variable
Define getter method
Define setter method
Use getter to read value
Use setter to change value
Value updated safely
END
This flow shows how a private variable is accessed and changed safely using getter and setter methods.
Execution Sample
Java
class Person {
  private String name;
  public String getName() { return name; }
  public void setName(String newName) { name = newName; }
}

Person p = new Person();
p.setName("Alice");
System.out.println(p.getName());
This code creates a Person object, sets the name to "Alice" using the setter, then prints the name using the getter.
Execution Table
StepActionVariable 'name' ValueOutput
1Create Person objectnull
2Call setName("Alice")"Alice"
3Call getName()"Alice"Alice
4End of program"Alice"
💡 Program ends after printing the name 'Alice' retrieved by the getter.
Variable Tracker
VariableStartAfter setName("Alice")Final
namenull"Alice""Alice"
Key Moments - 2 Insights
Why can't we access the variable 'name' directly?
Because 'name' is private, it can only be accessed inside the class. We use getter and setter methods to read and change it safely, as shown in steps 2 and 3 of the execution table.
What happens if we call getName() before setName()?
The variable 'name' would be null because it has not been set yet. This is shown in step 1 where 'name' starts as null.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of 'name' after step 2?
Anull
B"Alice"
C"Bob"
DEmpty string
💡 Hint
Check the 'Variable 'name' Value' column at step 2 in the execution table.
At which step does the program print output?
AStep 3
BStep 1
CStep 2
DStep 4
💡 Hint
Look at the 'Output' column in the execution table to find when 'Alice' is printed.
If we remove the setter method, what will happen when we try to set the name?
AThe name will be set anyway.
BThe name will be set to null.
CCompilation error because setName() does not exist.
DThe getter will return an empty string.
💡 Hint
Think about what happens if you call a method that is not defined in the class.
Concept Snapshot
Getter and setter methods allow controlled access to private variables.
Syntax:
private Type var;
public Type getVar() { return var; }
public void setVar(Type val) { var = val; }
Use getters to read and setters to update values safely.
Full Transcript
This visual execution shows how getter and setter methods work in Java. First, a private variable 'name' is created inside the Person class. We cannot access 'name' directly from outside because it is private. Instead, we define a getter method getName() to read the value and a setter method setName() to change it. When we create a Person object, 'name' starts as null. Calling setName("Alice") changes 'name' to "Alice". Then calling getName() returns "Alice", which is printed. This approach protects the variable and allows safe access and modification. The execution table tracks each step and variable value. Key moments clarify why direct access is not allowed and what happens if we get before setting. The quiz tests understanding of variable values and method roles. The snapshot summarizes the syntax and purpose of getters and setters.

Practice

(1/5)
1. What is the main purpose of getter and setter methods in Java?
easy
A. To create new objects from a class
B. To control access to private variables by reading and updating their values
C. To perform arithmetic operations on variables
D. To print values directly to the console

Solution

  1. Step 1: Understand the role of getters and setters

    Getters and setters are methods used to access and modify private variables safely.
  2. Step 2: Identify their purpose in encapsulation

    They help protect data by controlling how variables are read or changed from outside the class.
  3. Final Answer:

    To control access to private variables by reading and updating their values -> Option B
  4. Quick 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
A. private void setAge(int age) { age = this.age; }
B. public int setAge() { return age; }
C. public void setAge(int age) { this.age = age; }
D. public int getAge(int age) { this.age = age; }

Solution

  1. Step 1: Identify setter method structure

    A setter method is public, returns void, and takes a parameter to update the private variable.
  2. Step 2: Check the parameter assignment

    The method assigns the parameter value to the instance variable using this.age = age;.
  3. Final Answer:

    public void setAge(int age) { this.age = age; } -> Option C
  4. Quick 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
A. Alice
B. null
C. Compilation error
D. Empty line

Solution

  1. Step 1: Trace the setter method call

    The setName method sets the private variable name to "Alice".
  2. Step 2: Trace the getter method call

    The getName method returns the value of name, which is now "Alice".
  3. Final Answer:

    Alice -> Option A
  4. 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

  1. Step 1: Understand variable shadowing

    The parameter score shadows the instance variable score, so score = score; assigns parameter to itself.
  2. Step 2: Fix assignment using this

    Use this.score = score; to assign the parameter value to the instance variable.
  3. Final Answer:

    Use this.score = score; to assign parameter to instance variable -> Option D
  4. 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

  1. Step 1: Understand the requirement

    The setter must only allow values between 0 and 100 inclusive.
  2. 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.
  3. 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.
  4. Final Answer:

    public void setTemperature(int temperature) { if (temperature < 0 || temperature > 100) this.temperature = 0; else this.temperature = temperature; } -> Option A
  5. 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