<< Chapter < Page | Chapter >> Page > |
A public instance variable can be accessed by any code in any method in any object that can obtain a reference to the object to which thevariable belongs. However, you must first gain access to the object in order to gain access to the variable. Normally you gain access to the object using areference to the object and then gain access to a member of the object such as a variable or method. This is indirection .
A private instance variable can be accessed by any code in any method that is defined in the class of the object to which the variablebelongs.
A protected instance variable can be accessed by the same methods that can access a private instance variable plus methods in subclasses of the class of the object to which the instance variablebelongs.
I'm not going to try to explain the scope of internal and protected internal instance variables for the reasons that I discussed earlier.
A local variable is declared inside a method or constructor. The lifetime of a local variable is limited to the time that control remains within the block ofcode in which the variable is declared. The scope of the variable is limited to the code block in which it is declared and then only to the statements followingthe declaration statement.
A class variable belongs to a static class. I believe that the lifetime of a class variable is the same as the lifetime of the program in which the class isloaded.
It is not necessary to instantiate an object of the static class in order to access the variable. Assuming that you have access rights to the variable, youcan access it simply by joining the name of the class to the name of the variable using the dot operator.
I personally consider it bad programming practice to use class variables in most cases unless the variables are actually constants. However, there are a fewsituations where you have no choice but to use a non-constant class variable.
A reference variable contains a reference to an object or contains null. You typically use the value stored in a reference variable to locate an object inmemory. Once you locate the object, you typically use the dot operator along with the name of a variable or a method to ask the object to do something. Thisis called indirection .
Primitive variables contain primitive values. No indirection is required to access the primitive value stored in a primitive variable.
An analogy that I often use to explain the difference between a reference variable and a primitive variable goes as follows.
A primitive variable is analogous to your wallet.
If you get robbed and the robber takes your wallet, he has your money because the wallet contains your money just like a primitive variable contains aprimitive value.
A reference variable is analogous to your check book.
If the robber takes your checkbook, he doesn't have your money -- not yet anyway. The checkbook doesn't contain your money. Instead, it contains areference to your bank where your money is stored. A reference variable doesn't contain an object; it contains a reference to an object. Furthermore, two ormore reference variables can contain references to the same object but this is usually not a good idea.
Notification Switch
Would you like to follow the 'Xna game studio' conversation and receive update notifications?