Access Modifiers in Java
As
the name suggests access modifiers in Java helps to restrict the scope of a
class, constructor , variable , method or data member. There are four types of
access modifiers available in java:
1.
Default
– No keyword required
2.
Private
3.
Protected
4.
Public
java specefiear
1.
Default:
When no access modifier is specified for a class , method or data member – It
is said to be having the default access
modifier by default.
· The data members, class or
methods which are not declared using any access modifiers i.e. having default
access modifier are accessible only within the same package.
In this example, we will
create two packages and the classes in the packages will be having the default
access modifiers and we will try to access a class from one package from a
class of second package.
//Java
program to illustrate default modifier
package
p1;
//Class
Geeks is having Default access modifier
class
Geek
{
void
display()
{
System.out.println("Hello
World!");
}
}
//Java
program to illustrate error while
//using
class from different package with
//default
modifier
package
p2;
import
p1.*;
//This
class is having default access modifier
class
GeekNew
{
public
static void main(String args[])
{
//accessing
class Geek from package p1
Geeks
obj = new Geek();
obj.display();
}
}
//Java
program to illustrate default modifier
package
p1;
//Class
Geeks is having Default access modifier
class
Geek
{
void
display()
{
System.out.println("Hello
World!");
}
}
//Java
program to illustrate error while
//using
class from different package with
//default
modifier
package
p2;
import
p1.*;
//This
class is having default access modifier
class
GeekNew
{
public
static void main(String args[])
{
//accessing
class Geek from package p1
Geeks
obj = new Geek();
obj.display();
}
}
Output:
Compile time error
2.
Private: The private access
modifier is specified using the keyword private.
·
The
methods or data members declared as private are accessible only within
the class in which they are declared.
·
Any
other class of same package will not be able to access these
members.
·
Top
level Classes or interface can not be declared as private because
1. private means “only visible
within the enclosing class”.
2. protected means “only
visible within the enclosing class and any subclasses”
Hence
these modifiers in terms of application to classes, they apply only to nested
classes and not on top level classes
In this example, we will create two classes A
and B within same package p1. We will declare a method in class A as private
and try to access this method from class B and see the result.
//Java
program to illustrate error while
//using
class from different package with
//private
modifier
package
p1;
class
A
{
private
void display()
{
System.out.println("GeeksforGeeks");
}
}
class
B
{
public
static void main(String args[])
{
A
obj = new A();
//trying
to access private method of another class
obj.display();
}
}
//Java
program to illustrate error while
//using
class from different package with
//private
modifier
package
p1;
class
A
{
private
void display()
{
System.out.println("GeeksforGeeks");
}
}
class
B
{
public
static void main(String args[])
{
A
obj = new A();
//trying
to access private method of another class
obj.display();
}
}
Output:
Error:display() has
private access in A
Obj.display();
3. protected: The
protected access modifier is specified using the keyword protected.
·
The
methods or data members declared as protected are accessible within
same package or sub classes in different package.
In this example, we will create two packages
p1 and p2. Class A in p1 is made public, to access it in p2. The method display
in class A is protected and class B is inherited from class A and this
protected method is then accessed by creating an object of class B.
//Java
program to illustrate
//protected
modifier
package
p1;
//Class
A
public
class A
{
protected
void display()
{
System.out.println("GeeksforGeeks");
}
}
//Java
program to illustrate
//protected
modifier
package
p2;
import
p1.*; //importing all classes in package p1
//Class
B is subclass of A
class
B extends A
{
public
static void main(String args[])
{
B
obj = new B();
obj.display();
}
}
//Java
program to illustrate
//protected
modifier
package
p1;
//Class
A
public
class A
{
protected
void display()
{
System.out.println("GeeksforGeeks");
}
}
//Java
program to illustrate
//protected
modifier
package
p2;
import
p1.*; //importing all classes in package p1
//Class
B is subclass of A
class
B extends A
{
public
static void main(String args[])
{
B
obj = new B();
obj.display();
}
}
Output:
GeeksforGeeks
4. public: The
public access modifier is specified using the keyword public.
·
The
public access modifier has the widest scope among all other
access modifiers.
·
Classes,
methods or data members which are declared as public are accessible
from every where in the program. There is no restriction on the scope
of a public data members.
//Java
program to illustrate
//public
modifier
package
p1;
public
class A
{
public
void display()
{
System.out.println("GeeksforGeeks");
}
}
package
p2;
import
p1.*;
class
B
{
public
static void main(String args[])
{
A
obj = new A;
obj.display();
}
}
//Java
program to illustrate
//public
modifier
package
p1;
public
class A
{
public
void display()
{
System.out.println("GeeksforGeeks");
}
}
package
p2;
import
p1.*;
class
B
{
public
static void main(String args[])
{
A
obj = new A;
obj.display();
}
}
No comments:
Post a Comment