Access Modifiers in java
- private
access modifier
- Role of
private constructor
- default
access modifier
- protected
access modifier
- public
access modifier
- Applying
access modifier with method overriding
There are two types of
modifiers in java: access
modifiersand non-access
modifiers.
The access modifiers in java
specifies accessibility (scope) of a data member, method, constructor or class.
There are 4 types of java
access modifiers:
- private
- default
- protected
- public
There are many non-access
modifiers such as static, abstract, synchronized, native, volatile, transient
etc. Here, we will learn access modifiers.
1) private access modifier
The
private access modifier is accessible only within class.
|
Simple
example of private access modifier
In
this example, we have created two classes A and Simple. A class contains
private data member and private method. We are accessing these private
members from outside the class, so there is compile time error.
|
1. class A{
2. private int data=40;
3. private void msg(){System.out.println("Hello java");}
4. }
5.
6. public class Simple{
7. public static void main(String args[]){
8. A obj=new A();
9. System.out.println(obj.data);//Compile Time Error
10. obj.msg();//Compile Time Error
11. }
12. }
Role of Private Constructor
If
you make any class constructor private, you cannot create the instance of
that class from outside the class. For example:
|
1. class A{
2. private A(){}//private constructor
3. void msg(){System.out.println("Hello java");}
4. }
5. public class Simple{
6. public static void main(String args[]){
7. A obj=new A();//Compile Time Error
8. }
9. }
Note: A
class cannot be private or protected except nested class.
2) default access modifier
If
you don't use any modifier, it is treated as default bydefault. The default modifier is
accessible only within package.
|
Example of
default access modifier
In
this example, we have created two packages pack and mypack. We are accessing
the A class from outside its package, since A class is not public, so it
cannot be accessed from outside the package.
|
1. //save by A.java
2. package pack;
3. class A{
4. void msg(){System.out.println("Hello");}
5. }
1. //save by B.java
2. package mypack;
3. import pack.*;
4. class B{
5. public static void main(String args[]){
6. A obj = new A();//Compile Time Error
7. obj.msg();//Compile Time Error
8. }
9. }
In the above example, the scope
of class A and its method msg() is default so it cannot be accessed from
outside the package.
3) protected access modifier
The protected access modifier is accessible within package and
outside the package but through inheritance only.
The protected access modifier can
be applied on the data member, method and constructor. It can't be applied on
the class.
Example of
protected access modifier
In this example, we have
created the two packages pack and mypack. The A class of pack package is
public, so can be accessed from outside the package. But msg method of this
package is declared as protected, so it can be accessed from outside the class
only through inheritance.
1.
//save by A.java
2.
package pack;
3.
public class A{
4.
protected void msg(){System.out.println("Hello");}
5.
}
1. //save by B.java
2. package mypack;
3. import pack.*;
4.
5. class B extends A{
6. public static void main(String args[]){
7. B obj = new B();
8. obj.msg();
9. }
10. }
Output:Hello
4) public access modifier
The public access modifier is accessible everywhere. It has the
widest scope among all other modifiers.
|
Example of
public access modifier
1. //save by A.java
2.
3. package pack;
4. public class A{
5. public void msg(){System.out.println("Hello");}
6. }
1.
//save by B.java
2.
3.
package mypack;
4.
import pack.*;
5.
6.
class B{
7.
public static void main(String args[]){
8.
A obj = new A();
9.
obj.msg();
10. }
11. }
Output:Hello
Understanding all java access modifiers
Let's understand the access
modifiers by a simple table.
Access
Modifier
|
within
class
|
within
package
|
outside
package by subclass only
|
outside
package
|
Private
|
Y
|
N
|
N
|
N
|
Default
|
Y
|
Y
|
N
|
N
|
Protected
|
Y
|
Y
|
Y
|
N
|
Public
|
Y
|
Y
|
Y
|
Y
|
Java access modifiers with method overriding
If you are overriding any
method, overridden method (i.e. declared in subclass) must not be more
restrictive.
1.
class A{
2.
protected void msg(){System.out.println("Hello java");}
3.
}
4.
5.
public class Simple extends A{
6.
void msg(){System.out.println("Hello java");}//C.T.Error
7.
public static void main(String args[]){
8.
Simple obj=new Simple();
9.
obj.msg();
10. }
11. }
The
default modifier is more restrictive than protected. That is why there is
compile time error.
|
No comments:
Post a Comment