Scope and Access

The scope of a variable is defined as where a variable is accessible or can be used. The scope is determined by where you declare the variable when you write your programs. When you declare a variable, look for the closest enclosing curly brackets { } – this is its scope.

Java has 3 levels of scope that correspond to different types of variables:

The image below shows these 3 levels of scope.

Scope Levels

Figure 1: Class, Method, and Block Level Scope

exercise Check Your Understanding

Local variables are variables that are declared inside a method, usually at the top of the method. These variables can only be used within the method and do not exist outside of the method. Parameter variables are also considered local variables that only exist for that method. It’s good practice to keep any variables that are used by just one method as local variables in that method.

Instance variables at class scope are shared by all the methods in the class and can be marked as public or private with respect to their access outside of the class. They have Class scope regardless of whether they are public or private.

Another way to look at scope is that a variable’s scope is where it lives and exists. You cannot use the variable in code outside of its scope. The variable does not exist outside of its scope.

If there is a local variable with the same name as an instance variable, the variable name will refer to the local variable instead of the instance variable, as seen below. We’ll see in the next lesson, that we can distinguish between the local variable and the instance variable using the keyword this to refer to this object’s instance variables.

public class Person
{
   private String name;
   private String email;

   public Person(String initName, String initEmail)
   {
      name = initName;
      email = initEmail;
   }

   public String toString()
   {
     String name = "unknown";
     // The local variable name here will be used,
     //  not the instance variable name.
     return  name + ": " + email;
   }

   // main method for testing
   public static void main(String[] args)
   {
      // call the constructor to create a new person
      Person p1 = new Person("Sana", "sana@gmail.com");
      System.out.println(p1);
   }
}

Practice

Summary

  • Scope is defined as where a variable is accessible or can be used.

  • Local variables can be declared in the body of constructors and methods. These variables may only be used within the constructor or method and cannot be declared to be public or private.

  • When there is a local variable with the same name as an instance variable, the variable name will refer to the local variable instead of the instance variable.

  • Formal parameters and variables declared in a method or constructor can only be used within that method or constructor.

You have attempted of activities on this page