Access Specifiers in Java
Access Specifiers in Java
Definition :
- Java Access Specifiers (also known as Visibility Specifiers ) regulate access to classes, fields and methods in Java.
These Specifiers determine whether a field or method in a class, can be used or invoked by another method in
another class or sub-class. Access Specifiers can be used to restrict access. Access Specifiers are an integral part of
object-oriented programming.
1. public
2. private
3. protected
4. default(no specifier)
public specifiers :
Public Specifiers achieves the highest level of accessibility. Classes, methods, and fields declared as public can be
accessed from any class in the Java program, whether these classes are in the same package or in another package.
Example :
}
private specifiers :
Private Specifiers achieves the lowest level of accessibility. private methods and fields can only be accessed within
the same class to which the methods and fields belong. private methods and fields are not visible within subclasses
and are not inherited by subclasses. So, the private access specifier is opposite to the public access specifier. Using
Private Specifier we can achieve encapsulation and hide data from the outside world.
Example :
this.x = x;
this.y = y;
protected specifiers :
Methods and fields declared as protected can only be accessed by the subclasses in other package or any class within
the package of the protected members' class. The protected access specifier cannot be applied to class and interfaces.
default(no specifier):
When you don't set access specifier for the element, it will follow the default accessibility level. There is no default
specifier keyword. Classes, variables, and methods can be default accessed.Using default specifier we can access
class, method, or field which belongs to same package,but not from outside this package.
Example :
class Demo
int i; (Default)
Demo Class:
class AccessModifiersDemo {
private int empsalaray ;
public String empName;
private void calculateSalary() {
System.out.println("insid methodone");
}
public String printEmpName(String empName ) {
this.empName=empName;
return empName;
}
}
Output:
Arrays of Objects
An array of objects is created just like an array of primitive type data items in the
following way.
Student[] arr = new Student[7]; //student is a user-defined class
The studentArray contains seven memory spaces each of size of student class in which
the address of seven Student objects can be stored.The Student objects have to be
instantiated using the constructor of the Student class and their references should be
assigned to the array elements in the following way.
// objects
class Student
this.roll_no = roll_no;
this.name = name;
Student[] arr;
// so on...
Output:
Element at 0 : 1 aman
Element at 1 : 2 vaibhav
Element at 2 : 3 shikar
Element at 3 : 4 dharmesh
Element at 4 : 5 mohit
What happens if we try to access element outside the array size?
JVM throws ArrayIndexOutOfBoundsException to indicate that array has been
accessed with an illegal index. The index is either negative or greater than or equal to
size of array.
class GFG
arr[0] = 10;
arr[1] = 20;
System.out.println(arr[i]);
Runtime error
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at GFG.main(File.java:12)
Output:
10
20
Constructors in Java
In Java, a constructor is a block of codes similar to the method. It is called when an
instance of the class is created. At the time of calling constructor, memory for the object is
allocated in the memory.
Every time an object is created using the new() keyword, at least one constructor is called.
It calls a default constructor if there is no constructor available in the class. In such case,
Java compiler provides a default constructor by default.
There are two types of constructors in Java: no-arg constructor, and parameterized
constructor.
Note: It is called constructor because it constructs the values at the time of object creation.
It is not necessary to write a constructor for a class. It is because java compiler creates a
default constructor if your class doesn't have any.
1. //Java Program to create and call a default constructor
2. class Bike1{
3. //creating a default constructor
4. Bike1(){System.out.println("Bike is created");}
5. //main method
6. public static void main(String args[]){
7. //calling a default constructor
8. Bike1 b=new Bike1();
9. }
10. }
Output:
Bike is created
Example of default constructor that displays the default
values
1. //Let us see another example of default constructor
2. //which displays the default values
3. class Student3{
4. int id;
5. String name;
6. //method to display the value of id and name
7. void display(){System.out.println(id+" "+name);}
8.
9. public static void main(String args[]){
10. //creating objects
11. Student3 s1=new Student3();
12. Student3 s2=new Student3();
13. //displaying values of the object
14. s1.display();
15. s2.display();
16. }
17. }
Output:
0 null
0 null
1. //Java Program to demonstrate the use of the parameterized constructor.
2. class Student4{
3. int id;
4. String name;
5. //creating a parameterized constructor
6. Student4(int i,String n){
7. id = i;
8. name = n;
9. }
10. //method to display the values
11. void display(){System.out.println(id+" "+name);}
12.
13. public static void main(String args[]){
14. //creating objects and passing values
15. Student4 s1 = new Student4(111,"Karan");
16. Student4 s2 = new Student4(222,"Aryan");
17. //calling method to display the values of object
18. s1.display();
19. s2.display();
20. }
21. }
Output:
111 Karan
222 Aryan
111 Karan 0
222 Aryan 25