Cos'è l'incapsulamento in Java?
L'incapsulamento in Java è un meccanismo per raggruppare variabili (dati) e metodi (codice) insieme come una singola unità. È il processo di nascondere i dettagli delle informazioni e proteggere i dati e il comportamento dell'oggetto. È uno dei quattro importanti concetti OOP. La classe encapsulate è facile da testare, quindi è anche migliore per i test unitari.
In questo tutorial imparerai-
- Cos'è l'incapsulamento in Java?
- Impara l'incapsulamento con un esempio
- Nascondere i dati in Java
- Metodi Getter e Setter in Java
- Astrazione vs incapsulamento
- Vantaggi dell'incapsulamento in Java
Fare clic qui se il video non è accessibile
Impara l'incapsulamento con un esempio
Per comprendere in dettaglio cos'è l'incapsulamento, considera la seguente classe di conto bancario con metodi di deposito e mostra saldo
class Account {private int account_number;private int account_balance;public void show Data() {//code to show data}public void deposit(int a) {if (a < 0) {//show error} elseaccount_balance = account_balance + a;}}
Supponiamo che un hacker sia riuscito ad accedere al codice del tuo conto bancario. Ora, prova a depositare l'importo -100 sul tuo conto in due modi. Vediamo il suo primo metodo o approccio.
Approccio 1: tenta di depositare un importo non valido (ad esempio -100) sul tuo conto bancario manipolando il codice.
La domanda è: è possibile? Lasciati indagare.
Di solito, una variabile in una classe viene impostata come "privata" come mostrato di seguito. È possibile accedervi solo con i metodi definiti nella classe. Nessun altra classe o oggetto può accedervi.
Se un membro dati è privato, significa che è possibile accedervi solo all'interno della stessa classe. Nessuna classe esterna può accedere a membri di dati privati o variabili di un'altra classe.
Quindi nel nostro caso l'hacker non può depositare l'importo -100 sul tuo account.
Approccio 2 : il primo approccio dell'hacker non è riuscito a depositare l'importo. Successivamente, prova a depositare un importo -100 utilizzando il metodo "deposito".
Ma l'implementazione del metodo ha un controllo per i valori negativi. Quindi anche il secondo approccio fallisce.
Pertanto, non esponi mai i tuoi dati a una parte esterna. Il che rende la tua applicazione sicura.
L'intero codice può essere pensato come una capsula e puoi comunicare solo attraverso i messaggi. Da qui il nome incapsulamento.
Nascondere i dati in Java
Nascondere i dati in Java nasconde le variabili di una classe da altre classi. È possibile accedervi solo tramite il metodo della loro classe corrente. Nasconde i dettagli di implementazione agli utenti. Ma più che nascondere i dati, è pensato per una migliore gestione o raggruppamento dei dati correlati.
Per ottenere un grado inferiore di incapsulamento in Java, è possibile utilizzare modificatori come "protetto" o "pubblico". Con l'incapsulamento, gli sviluppatori possono modificare facilmente una parte del codice senza influire sull'altra.
Getter e Setter in Java
Getter e Setter in Java sono due metodi convenzionali utilizzati per recuperare e aggiornare i valori di una variabile. Sono principalmente utilizzati per creare, modificare, eliminare e visualizzare i valori delle variabili. Il metodo setter viene utilizzato per aggiornare i valori e il metodo getter viene utilizzato per leggere o recuperare i valori. Sono anche conosciuti come accessori e mutatori.
Il codice seguente è un esempio di metodi getter e setter:
class Account{private int account_number;private int account_balance;// getter methodpublic int getBalance() {return this.account_balance;}// setter methodpublic void setNumber(int num) {this.account_number = num;}}
Nell'esempio precedente, il metodo getBalance () è il metodo getter che legge il valore della variabile account_balance e il metodo setNumber () è il metodo setter che imposta o aggiorna il valore per la variabile account_number.
Astrazione vs incapsulamento
Spesso l'incapsulamento viene frainteso con Abstraction. Studiamo-
- L'incapsulamento riguarda più il "Come" ottenere una funzionalità
- L'astrazione riguarda più "cosa" può fare una classe.
Un semplice esempio per capire questa differenza è un telefono cellulare. Dove la complessa logica nel circuito stampato è incapsulata in un touch screen e l'interfaccia è fornita per astrarla.
Vantaggi dell'incapsulamento in Java
- L'incapsulamento sta vincolando i dati con le relative funzionalità. Qui funzionalità significa "metodi" e dati significa "variabili"
- Quindi manteniamo variabili e metodi in un unico posto. Quel posto è "classe". La classe è la base per l'incapsulamento.
- Con Java Encapsulation, puoi nascondere (limitare l'accesso) ai membri dei dati critici nel tuo codice, migliorando la sicurezza
- Come discusso in precedenza, se un membro dati viene dichiarato "privato", è possibile accedervi solo all'interno della stessa classe. Nessuna classe esterna può accedere al membro dati (variabile) di un'altra classe.
- Tuttavia, se hai bisogno di accedere a queste variabili, devi usare i metodi pubblici "getter" e "setter" .