Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Modificatore Private | Classi Avanzate
Java Avanzato

bookModificatore Private

Come nascondere campi e metodi da un'altra classe?

I modificatori di accesso vengono utilizzati per controllare la visibilità e l'accessibilità di variabili e metodi in Java. Consentono di definire l'ambito e di limitare l'accesso a determinati membri di una classe.

Abbiamo già discusso dei modificatori di accesso nella sezione precedente. Ora, esaminiamo più da vicino il modificatore di accesso più comunemente utilizzato: private.

Come già sapete, con il modificatore di accesso private, è possibile accedere a un campo/metodo solo dalla classe in cui si trova. Vediamo un esempio di utilizzo del modificatore private:

Ad esempio, se non si desidera che una variabile in una classe sia visibile o accessibile da un'altra classe, è possibile utilizzare il modificatore di accesso private:

Main.java

Main.java

copy
123456789101112131415
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.name = "Bob"; System.out.println(bob.name); } } class Person { private String name; private int age; private String gender; }

Abbiamo dichiarato i campi della classe Person come private. Quando proviamo a inizializzare direttamente il campo, otteniamo un errore che indica che il campo name ha un modificatore di accesso private e non è accessibile per la chiamata o la modifica nel metodo main.

Come inizializzare un campo privato?

Il modo più semplice per aggirare la protezione è utilizzare l'inizializzazione tramite un costruttore. Tuttavia, in questo modo, possiamo solo inizializzare i campi degli oggetti ma non accedere a tali campi. Vediamo un esempio:

Main.java

Main.java

copy
123456789101112131415161718
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob"); System.out.println(bob.name); } } class Person { private String name; private int age; private String gender; public Person(String name) { this.name = name; } }

Siamo riusciti a inizializzare il campo name tramite il costruttore, ma non possiamo comunque accedere a questo campo e stamparlo usando System.out.println(). Per aggirare questo limite, possiamo sovrascrivere il metodo toString() in modo che, quando chiamiamo System.out.println(bob);, vengano mostrate le informazioni sui suoi campi. Vediamo un esempio:

Main.java

Main.java

copy
1234567891011121314151617181920212223
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob"); System.out.println(bob); } } class Person { private String name; private int age; private String gender; public Person(String name) { this.name = name; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + '}'; } }

Siamo finalmente riusciti a visualizzare il valore del campo name dell'oggetto bob. Questo risultato è stato ottenuto utilizzando il metodo sovrascritto toString() dove abbiamo implementato la logica per mostrare il name.

Sorge quindi la domanda: perché abbiamo bisogno di questo modificatore di accesso se dobbiamo scrivere così tanto codice aggiuntivo?

A volte, in classi diverse, esistono variabili con lo stesso nome e, in questi casi, è necessario nascondere le variabili di queste classi affinché le altre classi non abbiano accesso a campi non necessari. Questo migliora notevolmente la praticità nella scrittura del codice in generale, poiché si comprende a quale classe appartiene ciascun campo.

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 5. Capitolo 3

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Awesome!

Completion rate improved to 2.63

bookModificatore Private

Scorri per mostrare il menu

Come nascondere campi e metodi da un'altra classe?

I modificatori di accesso vengono utilizzati per controllare la visibilità e l'accessibilità di variabili e metodi in Java. Consentono di definire l'ambito e di limitare l'accesso a determinati membri di una classe.

Abbiamo già discusso dei modificatori di accesso nella sezione precedente. Ora, esaminiamo più da vicino il modificatore di accesso più comunemente utilizzato: private.

Come già sapete, con il modificatore di accesso private, è possibile accedere a un campo/metodo solo dalla classe in cui si trova. Vediamo un esempio di utilizzo del modificatore private:

Ad esempio, se non si desidera che una variabile in una classe sia visibile o accessibile da un'altra classe, è possibile utilizzare il modificatore di accesso private:

Main.java

Main.java

copy
123456789101112131415
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person(); bob.name = "Bob"; System.out.println(bob.name); } } class Person { private String name; private int age; private String gender; }

Abbiamo dichiarato i campi della classe Person come private. Quando proviamo a inizializzare direttamente il campo, otteniamo un errore che indica che il campo name ha un modificatore di accesso private e non è accessibile per la chiamata o la modifica nel metodo main.

Come inizializzare un campo privato?

Il modo più semplice per aggirare la protezione è utilizzare l'inizializzazione tramite un costruttore. Tuttavia, in questo modo, possiamo solo inizializzare i campi degli oggetti ma non accedere a tali campi. Vediamo un esempio:

Main.java

Main.java

copy
123456789101112131415161718
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob"); System.out.println(bob.name); } } class Person { private String name; private int age; private String gender; public Person(String name) { this.name = name; } }

Siamo riusciti a inizializzare il campo name tramite il costruttore, ma non possiamo comunque accedere a questo campo e stamparlo usando System.out.println(). Per aggirare questo limite, possiamo sovrascrivere il metodo toString() in modo che, quando chiamiamo System.out.println(bob);, vengano mostrate le informazioni sui suoi campi. Vediamo un esempio:

Main.java

Main.java

copy
1234567891011121314151617181920212223
package com.example; public class Main { public static void main(String[] args) { Person bob = new Person("Bob"); System.out.println(bob); } } class Person { private String name; private int age; private String gender; public Person(String name) { this.name = name; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + '}'; } }

Siamo finalmente riusciti a visualizzare il valore del campo name dell'oggetto bob. Questo risultato è stato ottenuto utilizzando il metodo sovrascritto toString() dove abbiamo implementato la logica per mostrare il name.

Sorge quindi la domanda: perché abbiamo bisogno di questo modificatore di accesso se dobbiamo scrivere così tanto codice aggiuntivo?

A volte, in classi diverse, esistono variabili con lo stesso nome e, in questi casi, è necessario nascondere le variabili di queste classi affinché le altre classi non abbiano accesso a campi non necessari. Questo migliora notevolmente la praticità nella scrittura del codice in generale, poiché si comprende a quale classe appartiene ciascun campo.

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 5. Capitolo 3
some-alt