Tuesday, October 11, 2011

Access Specifiers and Modifiers in Java Programming Language


Access Specifiers and Modifiers
Classes enable an object to access data variables or methods of another class. Java provides access specifiers and modifiers to decide which part of the class, such as data members and methods will be accessible to other classes or objects and how the data members are used in other classes and objects.

Access Specifiers
An access specifier controls the access of class members and variable by other objects. The variouse types of access specifiers in Java are:


  1. The public access specifier. A member of a class declared public can be accessed anywhere in the same class, package in which the class is created. you can use a public class, data member, or method from any object in a Java program.  Note that a package is a collection of classes. A class’s public members are accessible wherever the program has a reference to an object of that class. It’s advisable that methods be declared public while instance variables be declared private. An example of declaring variables and methods with the public access specifier: 
public string name = “Ginowine”;
public void setName ()
{
}
The access specifier public in the first example shows that the variable name is accessible wherever a program has a reference to an object of the class in which the variable is declared. Classes in the same package with the class of the name variable declared public can also access it.
  1. private access specifier. This specifier provides most restricted level access. A data member of a class declared private is accessible at the class level only in which it is declared. It is a fact that in Java, you implement the concept of encapsulation by suing the private keyword. Below is example of declaring a variable private
private int age = 30;
and this is how to declare a method private:
private int getAge ()
{
}
The private specifier in the first example show’s that variable age can only be access from inside the class in which it was created. Same goes for the method example, it can only be accessed from within the class it was created. They are not directly accessible outside the class of their declaration.
  1. Protected access specifier. Variables and methods declared protected are accessible only to the subclass of the class in which they are declared. It is sometimes said that protected access specifier offers an intermediate level of access between public and private specifiers. A superclass’s protected members can be accessed by members of that superclass, by members of its subclass and members of other classes in the same package. Subclass methods can refer to public and protected members inherited from the superclass simply by using the member name. when a subclass method overrides a superclass method, the superclass method can be accessed from the subclass by preceding the method superclass method name with keyword super and dot (.) separator. An example of declaring a member as protected.
Protected float salaray = 350 ;
  1. Friendly or package Access Specifier. If you do not specify any access specifier, the scope of data members and methods is friendly. Java provides a large number of classes, which are organized into groups in a package. A class variable or method that is declared friendly is accessible only to the classes of a package in which they are declared. Example of declaring a member protected include:
Int age = 30 ;
Remember that the default access specifier if you do not specify one directly is protected, so the above statement has no access specified as such it is a friendly variable and can only be accessed by classes in the same package.

Types of Modifiers

Modifiers determine or define how the data members and methods are used in other classes and objects. The main difference between access specifiers and modifiers is that access specifiers define the accessibility of the data members in a class and the modifiers determine how these methods are used and modified by other classes. The various modifiers permitted in Java include:

Static Modifier
Every object has its own copy of all the instance variables of the class. In certain cases, only one copy of a particular variable should be shared by all objects of a class. A static field is used in such cases. A static variable represents classwide information, all objects of the class share the same piece of data. The declaration of a static variable begins with the keyword static.

Final Modifier
The final keyword is used with methods, variables, and classes. The final modifier indicates that the data member cannot be modified and any attempt to modify it is an error. The final modifier does not allow the class to be inherited. It is used to create classes that serve as a standard and you do not want anybody to modify the methods in a subclass and use them in a different way.  A class can be declared final if you do not want the class to be subclassed.

Abstract Modifier
The abstract keyword is used to declare classes that only define common  properties and behaviour of other classes. An abstract class is used as base class to derive specific classes of the same type.

Native
The native modifier is used only with methods. It is used to inform the compiler that the method has been coded in a programming language other than Java, such as C++ or C. the native keyword with a method indicates that the method lies outside the Java Runtime Environment (JRE).

No comments: