This week's book giveaway is in the OCPJP forum. We're giving away four copies of OCA/OCP Java SE 7 Programmer I & II Study Guide and have Kathy Sierra & Bert Bates on-line! See this thread for details.
What's the difference if I create a get method in a class for a variable versus giving the variable no access modifier(so it can be accessed within that package) and accessing it by ClassName.variable What is the proper way, and does one or the other leave the variable in memory longer?
Jennifer, There are no differences in memory. However, using get/set methods to give access to instance variables is the proper way to do things. The official term is "encapsulation" and it's your first step toward creating a good design for your components. The idea is that when you reveal your variables directly, other components will use them. And then, what happens when you need to change those variables somehow? The answer: bad things happen. When all clients use methods to access your object, you're free to change the "insides" however you feel fit as long as it doesn't break the interface you've provided for clients of your component.
To further clarify Nathaniel's point, say you have a variable that is only allowed certain values, such as hours on a clock. If you let people directly access clock.hours, you have NO control over what they set it to. 18, 397, -46... you can't stop it. however, if you use a setter method, if they call clock.setHours(96), you can ignore the value, do a mod 12 on it, throw an exception... anything you want. The point is, YOU have control over it.
There are only two hard things in computer science: cache invalidation, naming things, and off-by-one errors
Joined: Feb 28, 2001
Thanks for the input guys! It is much appreciated.