+ 3
Question about getter and setter methods in Java
hi everyone. I wish to clarify some things and hopefully you can tell me if some of the things I have right or got wrong in terms of facts. Here goes. In java we can either have a setter or getter method. getter methods are used for retrieving variable values while setters can be used to manipulate or rather reset a variables value since those methods are the receivers while getters are the senders. forgive me if I got nothing right. I just want to learn from my misunderstandings lol.
4 ответов
+ 1
@Din It's not recommended. Take a look:
private int age;
void setAge (int age){this.age = age;}
int getAge (){return this.age;}
Did you notice something? The getter method doesn't require an argument, but returns a value.
The setter method in the other hand does require an argument (to assign it to a variable, the class field).
Now: is it possible to have a function that works both as getter and setter? Yes, it is. But you'll gave more headache to deal with, and the usability of your code will be impacted
+ 2
Man, you're not wrong. I want to point it out that getters and setters are very powerful:
First they protect the class fields (encapsulation): you can keep those variables private then nobody can change in an unexpected way. If you need that value you call a getter instead.
Other thing is you can impose restrictions to assign a value. For example, you're coding a program for a bar (in this place only grown-ups are allowed). You create a class Person (it will hold the bar clients) with a field called age (int age). If you have a setter for age you can restrict ages bellow 18, for instance. If you didn't have a setter, someone could enter an age 12...
Other greatest advantage is: I write my code and I don't have to worry if others know how my class fields are. I just have the getters and setters, protecting them and at same time with restrictions to my program work in an expected way
+ 2
wow thanks for that explanation. getters and setters are really cool.
+ 1
quick question can a method be both a getter and a setter or only one?