7.11. The Scope of Variables

 
[Page 235]

7.11. The Scope of Variables

Chapter 5, " Methods ," discussed local variables and their scope rules. Local variables are declared and used inside a method locally. This section discusses the scope rules of all the variables in the context of a class.

Instance and static variables in a class are referred to as the class's variables or data fields . A variable defined inside a method is referred to as a local variable. The scope of a class's variables is the entire class, regardless of where the variables are declared. A class's variables and methods can be declared in any order in the class, as shown in Figure 7.18(a). The exception is when a data field is initialized based on a reference to another data field. In such cases, the other data field must be declared first, as shown in Figure 7.18(b).

Figure 7.18. Members of a class can be declared in any order, with one exception.

You can declare a class's variable only once, but you can declare the same variable name in a method many times in different non-nesting blocks.

If a local variable has the same name as a class's variable, the local variable takes precedence and the class's variable with the same name is hidden. For example, in the following program, x is defined as an instance variable and as a local variable in the method.

   class   Foo {   int    x =     ;   // instance variable    int   y =     ;   Foo()   {   }   void   p() {   int    x =   1   ;   // local variable  System.out.println(   "x = "   + x);     System.out.println(   "y = "   + y);   } } 

What is the printout for f.p() , where f is an instance of Foo ? The printout for f.p() is 1 for x and for y . Here is why:

  • x is declared as a data field with the initial value of in the class, but is also defined in the method p() with an initial value of 1 . The latter x is referenced in the System.out.println statement.

  • y is declared outside the method p() , but is accessible inside it.

Tip

As demonstrated in the example, it is easy to make mistakes. To avoid confusion, do not declare the same variable name twice in a class, except for method parameters.


 


Introduction to Java Programming-Comprehensive Version
Introduction to Java Programming-Comprehensive Version (6th Edition)
ISBN: B000ONFLUM
EAN: N/A
Year: 2004
Pages: 503

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net