Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Private Modifier | Classes Advanced
Java Extended

Private Modifier

How to hide fields and methods from another class?

Access modifiers are used to control the visibility and accessibility of variables and methods in Java. They allow us to define the scope and restrict access to certain members of a class.

We have already discussed access modifiers in the previous section. Now, let's take a closer look at the most commonly used access modifier - private.

As you know, with the private access modifier, we can only access a field/method from the class in which it is located. Let's look at an example of using the private modifier:

For example, if we don't want a variable in one class to be visible or accessible to another class, we can use the private access modifier:

java

Main.java

We have declared the fields of the Person class as private. When we try to directly initialize the field, we get an error indicating that the name field has a private access modifier and is not accessible for calling or modifying in the main method.

How to initialize private field?

The simplest way to bypass the protection is to use initialization through a constructor. However, this way, we can only initialize the fields of objects but not access those fields. Let's look at an example:

java

Main.java

We were able to initialize the name field through the constructor, but we still cannot access this field and print it using System.out.println(). To bypass this, we can override the toString() method so that when we call System.out.println(bob);, it displays information about its fields. Let's look at an example:

java

Main.java

We finally managed to display the value of the name field of the bob object. We achieved this by using the overridden toString() method, where we implemented the logic for displaying the name.

The question arises, why do we need this access modifier if we have to write so much extra code?

Sometimes, in different classes, there are variables with the same name, and in such cases, it is necessary to hide the variables of these classes so that other classes do not have access to unnecessary fields. This greatly improves the convenience of writing code in general when you understand which field belongs to which class.

Note

Although, in the future, you will write a lot of classes, and there will be a lot of code and different variables. So you will need to set access modifications to fields and methods to restrict their visibility.

Everything was clear?

Section 5. Chapter 3

Private Modifier

How to hide fields and methods from another class?

Access modifiers are used to control the visibility and accessibility of variables and methods in Java. They allow us to define the scope and restrict access to certain members of a class.

We have already discussed access modifiers in the previous section. Now, let's take a closer look at the most commonly used access modifier - private.

As you know, with the private access modifier, we can only access a field/method from the class in which it is located. Let's look at an example of using the private modifier:

For example, if we don't want a variable in one class to be visible or accessible to another class, we can use the private access modifier:

java

Main.java

We have declared the fields of the Person class as private. When we try to directly initialize the field, we get an error indicating that the name field has a private access modifier and is not accessible for calling or modifying in the main method.

How to initialize private field?

The simplest way to bypass the protection is to use initialization through a constructor. However, this way, we can only initialize the fields of objects but not access those fields. Let's look at an example:

java

Main.java

We were able to initialize the name field through the constructor, but we still cannot access this field and print it using System.out.println(). To bypass this, we can override the toString() method so that when we call System.out.println(bob);, it displays information about its fields. Let's look at an example:

java

Main.java

We finally managed to display the value of the name field of the bob object. We achieved this by using the overridden toString() method, where we implemented the logic for displaying the name.

The question arises, why do we need this access modifier if we have to write so much extra code?

Sometimes, in different classes, there are variables with the same name, and in such cases, it is necessary to hide the variables of these classes so that other classes do not have access to unnecessary fields. This greatly improves the convenience of writing code in general when you understand which field belongs to which class.

Note

Although, in the future, you will write a lot of classes, and there will be a lot of code and different variables. So you will need to set access modifications to fields and methods to restrict their visibility.

Everything was clear?

Section 5. Chapter 3
some-alt