access modifiers java tutorial with examples
Questo video tutorial spiega cosa sono i modificatori di accesso in Java e come utilizzare i modificatori di accesso predefinito, pubblico, protetto e privato con l'aiuto di esempi:
In Java, abbiamo classi e oggetti. Queste classi e oggetti sono contenuti in un pacchetto. Inoltre, le classi possono avere classi nidificate, metodi, variabili, ecc. Poiché Java è un linguaggio di programmazione orientato agli oggetti, dobbiamo seguire l'incapsulamento in cui nascondiamo i dettagli indesiderati.
Java fornisce entità chiamate 'Modificatori di accesso o specificatori di accesso' che ci aiutano a limitare l'ambito o la visibilità di un pacchetto, classe, costruttore, metodi, variabili o altri membri di dati. Questi modificatori di accesso sono anche chiamati 'Indicatori di visibilità'.
Utilizzando gli specificatori di accesso, un particolare metodo di classe o variabile può essere limitato all'accesso o nascosto dalle altre classi.
=> Controlla TUTTI i tutorial Java qui.
è c ++ meglio di java
Cosa imparerai:
- Tutorial video sui modificatori di accesso in Java
- Modificatori di accesso in Java
- Tipi di modificatori di accesso in Java
- Conclusione
Tutorial video sui modificatori di accesso in Java
Modificatori di accesso in Java
Gli specificatori di accesso determinano anche a quali membri di dati (metodi o campi) di una classe possono accedere altri membri di dati di classi o pacchetti ecc. Per garantire l'incapsulamento e la riusabilità, questi specificatori / modificatori di accesso sono parte integrante della programmazione orientata agli oggetti.
I modificatori in Java sono di due tipi:
# 1) Modificatori di accesso
I modificatori di accesso in Java ci consentono di impostare l'ambito, l'accessibilità o la visibilità di un membro dati sia esso un campo, un costruttore, una classe o un metodo.
# 2) Modificatori di non accesso
Java fornisce anche specificatori di non accesso che vengono utilizzati con classi, variabili, metodi, costruttori, ecc. Gli specificatori / modificatori di non accesso definiscono il comportamento delle entità alla JVM.
Alcuni degli specificatori / modificatori di non accesso in Java sono:
- statico
- finale
- astratto
- transitorio
- volatile
- sincronizzato
- nativo
Abbiamo trattato le parole chiave statiche, sincronizzate e volatili nei nostri tutorial precedenti. Tratteremo gli altri modificatori di non accesso nelle nostre esercitazioni future poiché esulano dallo scopo di questa esercitazione.
Tipi di modificatori di accesso in Java
Java fornisce quattro tipi di specificatori di accesso che possiamo utilizzare con classi e altre entità.
Questi sono:
# 1) Predefinito: Ogni volta che non viene specificato un livello di accesso specifico, si presume che sia 'predefinito'. L'ambito del livello predefinito è all'interno del pacchetto.
# 2) Pubblico: Questo è il livello di accesso più comune e ogni volta che lo specificatore di accesso pubblico viene utilizzato con un'entità, quella particolare entità è accessibile dall'interno o dall'esterno della classe, all'interno o all'esterno del pacchetto, ecc.
# 3) Protetto: Il livello di accesso protetto ha un ambito che si trova all'interno del pacchetto. Un'entità protetta è accessibile anche all'esterno del pacchetto tramite una classe ereditata o una classe figlia.
# 4) Privato: Quando un'entità è privata, non è possibile accedere a questa entità al di fuori della classe. Un'entità privata può essere accessibile solo dall'interno della classe.
Possiamo riassumere i modificatori di accesso nella tabella seguente.
Identificatore di accesso | In classe | Pacchetto interno | Sottoclasse del pacchetto esterno | Pacchetto esterno |
---|---|---|---|---|
Privato | sì | No | No | No |
Predefinito | sì | sì | No | No |
Protetto | sì | sì | sì | No |
Pubblico | sì | sì | sì | sì |
Successivamente, discuteremo in dettaglio ciascuno di questi specificatori di accesso.
Specificatori di accesso predefiniti
Un modificatore di accesso predefinito in Java non ha una parola chiave specifica. Ogni volta che il modificatore di accesso non è specificato, si presume che sia il valore predefinito. Le entità come classi, metodi e variabili possono avere un accesso predefinito.
Una classe predefinita è accessibile all'interno del pacchetto ma non è accessibile dall'esterno del pacchetto, ovvero tutte le classi all'interno del pacchetto in cui è definita la classe predefinita possono accedere a questa classe.
Allo stesso modo un metodo o una variabile di default è accessibile anche all'interno del pacchetto in cui sono definiti e non all'esterno del pacchetto.
Il programma seguente mostra il modificatore di accesso predefinito in Java.
class BaseClass { void display() //no access modifier indicates default modifier { System.out.println('BaseClass::Display with 'dafault' scope'); } } class Main { public static void main(String args()) { //access class with default scope BaseClass obj = new BaseClass(); obj.display(); //access class method with default scope } }
Produzione:
Nel programma sopra, abbiamo una classe e un metodo al suo interno senza alcun modificatore di accesso. Quindi sia la visualizzazione della classe che quella del metodo hanno accesso predefinito. Quindi vediamo che nel metodo, possiamo creare direttamente un oggetto della classe e chiamare il metodo.
Modificatore di accesso pubblico
Una classe, un metodo o un campo dati specificato come 'pubblico' è accessibile da qualsiasi classe o pacchetto nel programma Java. L'entità pubblica è accessibile sia all'interno del pacchetto che all'esterno del pacchetto. In generale, il modificatore di accesso pubblico è un modificatore che non limita affatto l'entità.
class A { public void display() { System.out.println('SoftwareTestingHelp!!'); } } class Main { public static void main(String args()) { A obj = new A (); obj.display(); } }
Produzione:
Identificatore di accesso protetto
Lo specificatore di accesso protetto consente l'accesso alle entità tramite sottoclassi della classe in cui è dichiarata l'entità. Non importa se la classe è nello stesso pacchetto o in un pacchetto diverso, ma finché la classe che sta tentando di accedere a un'entità protetta è una sottoclasse di questa classe, l'entità è accessibile.
Nota che una classe e un'interfaccia non possono essere protette, ovvero non possiamo applicare modificatori protetti a classi e interfacce.
Il modificatore di accesso protetto viene solitamente utilizzato nelle relazioni padre-figlio.
Il programma seguente mostra l'utilizzo del modificatore di accesso protetto in Java.
//A->B->C = class hierarchy class A { protected void display() { System.out.println('SoftwareTestingHelp'); } } class B extends A {} class C extends B {} class Main{ public static void main(String args()) { B obj = new B(); //create object of class B obj.display(); //access class A protected method using obj C cObj = new C(); //create object of class C cObj.display (); //access class A protected method using cObj } }
Produzione:
Modificatore di accesso privato
Il modificatore di accesso 'privato' è quello con il livello di accessibilità più basso. I metodi e i campi dichiarati come privati non sono accessibili all'esterno della classe. Sono accessibili solo all'interno della classe che ha queste entità private come membri.
Nota che le entità private non sono nemmeno visibili alle sottoclassi della classe. Un modificatore di accesso privato garantisce l'incapsulamento in Java.
Alcuni punti da notare per quanto riguarda il modificatore di accesso privato.
- Il modificatore di accesso privato non può essere utilizzato per classi e interfacce.
- L'ambito delle entità private (metodi e variabili) è limitato alla classe in cui sono dichiarate.
- Una classe con un costruttore privato non può creare un oggetto della classe da nessun altro posto come il metodo principale. (Maggiori dettagli sui costruttori privati sono stati spiegati nel nostro tutorial precedente).
Il seguente programma Java utilizza un modificatore di accesso privato.
class TestClass{ //private variable and method private int num=100; private void printMessage(){System.out.println('Hello java');} } public class Main{ public static void main(String args()){ TestClass obj=new TestClass(); System.out.println(obj.num);//try to access private data member - Compile Time Error obj.printMessage();//Accessing private method - Compile Time Error } }
Produzione:
Il programma precedente fornisce un errore di compilazione poiché stiamo cercando di accedere a membri di dati privati utilizzando l'oggetto classe.
Ma esiste un metodo per accedere alle variabili membro private. Questo metodo utilizza getter e setter in Java. Quindi forniamo un metodo get pubblico nella stessa classe in cui viene dichiarata la variabile privata in modo che getter possa leggere il valore della variabile privata.
Allo stesso modo, forniamo un metodo setter pubblico che ci consente di impostare un valore per la variabile privata.
Il seguente programma Java dimostra l'uso di metodi getter e setter per variabili private in Java.
class DataClass { private String strname; // getter method public String getName() { return this.strname; } // setter method public void setName(String name) { this.strname= name; } } public class Main { public static void main(String() main){ DataClass d = new DataClass(); // access the private variable using the getter and setter d.setName('Java Programming'); System.out.println(d.getName()); } }
Produzione:
Il programma precedente ha una classe con una variabile stringa privata. Forniamo un metodo membro getName pubblico che restituisce il valore della variabile privata. Forniamo anche un metodo setName pubblico nella classe che accetta una stringa come argomento e la assegna alla variabile private.
Poiché entrambi i metodi sono pubblici, possiamo accedervi facilmente utilizzando l'oggetto della classe. In questo modo possiamo superare l'errore di compilazione che si apre ogni volta che proviamo ad accedere ai dati privati membri della classe.
Domande frequenti
D # 1) Quanti modificatori di accesso ci sono in Java?
file input output c ++
Risposta: Java fornisce quattro modificatori, ovvero predefinito, pubblico, protetto e privato.
D # 2) Cosa sono i modificatori di accesso e i modificatori non di accesso in Java?
Risposta: I modificatori di accesso definiscono la visibilità o l'ambito di un'entità del programma come una classe, un metodo, una variabile o un costruttore. I modificatori di non accesso definiscono il comportamento di un'entità. Per esempio, un metodo o blocco sincronizzato indica che può funzionare in un ambiente multithreading, una variabile finale indica che è una costante.
D # 3) Perché sono importanti gli specificatori di accesso?
Risposta: I modificatori specificano quale classe può accedere a quali altre classi o metodi o variabili. Utilizzando gli specificatori di accesso possiamo limitare l'accesso a varie classi, metodi, costruttori e variabili e garantire anche l'incapsulamento e la riusabilità delle entità Java.
D # 4) Quali modificatori non sono usati per la classe?
Risposta: I modificatori Protected e Private non vengono utilizzati per una classe.
D # 5) Cosa sono i modificatori di non accesso?
Risposta: I modificatori che definiscono il comportamento di entità come classe, metodo o variabili a cui sono associati sono modificatori di non accesso. Come suggerisce il nome, non specificano l'accesso. Java fornisce vari modificatori di non accesso come statico, finale, sincronizzato, volatile, astratto, ecc.
Ulteriori informazioni sui modificatori di visibilità
Java fornisce molti modificatori per accedere alla variabile, ai metodi e ai costruttori.
Esistono 4 tipi di variabili di accesso in Java:
- Privato
- Pubblico
- Predefinito
- Protetto
# 1) Privato
Se una variabile viene dichiarata come privata, è possibile accedervi all'interno della classe. Questa variabile non sarà disponibile al di fuori del corso. Quindi, i membri esterni non possono accedere ai membri privati.
Nota: Le classi e le interfacce non possono essere private.
# 2) Pubblico
I metodi / variabili con modificatori pubblici sono accessibili da tutte le altre classi del progetto.
# 3) Protetto
Se una variabile viene dichiarata protetta, è possibile accedervi all'interno delle stesse classi di pacchetto e sottoclasse di qualsiasi altro pacchetto.
Nota: Il modificatore di accesso protetto non può essere utilizzato per la classe e le interfacce.
# 4) Modificatore di accesso predefinito
Se una variabile / metodo è definita senza alcuna parola chiave del modificatore di accesso, allora avrà un accesso modificatore predefinito.
Modificatori di accesso | Visibilità |
---|---|
Pubblico | Visibile a tutte le classi. |
Protetto | Visibile alle classi con nel pacchetto e alle sottoclassi di altri pacchetti. |
Nessun modificatore di accesso (predefinito) | Visibile alle classi con il pacchetto |
privato | Visibile con in classe. Non è accessibile al di fuori della classe. |
Classe demo:
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; } }
Accesso ai membri della classe in un'altra classe:
public class TestAccessModifier { public static void main(String() args) { AccessModifiersDemo accessobj =new AccessModifiersDemo(); accessobj.calculateSalary(); } }
Produzione:
Accesso ai membri pubblici:
la migliore app per spiare il telefono di qualcuno
public class TestAccessModifier { public static void main(String() args) { AccessModifiersDemo accessobj =new AccessModifiersDemo(); System.out.println(accessobj.printEmpName('Bobby')); } }
Produzione:
Bobby
Punti importanti:
- Gli specificatori di accesso definiscono la visibilità della classe.
- Se non viene menzionata alcuna parola chiave, questo è il modificatore di accesso predefinito.
- Quattro modificatori in Java includono public, private, protected e default.
- Le parole chiave private e protette non possono essere utilizzate per classi e interfacce.
Conclusione
In questo tutorial, abbiamo esplorato in dettaglio i modificatori di accesso in Java. Java fornisce quattro tipi di modificatori di accesso o specificatori di visibilità, ovvero predefinito, pubblico, privato e protetto. Il modificatore predefinito non ha alcuna parola chiave associata.
Quando una classe, un metodo o una variabile non ha uno specificatore di accesso associato, si presume che abbia un accesso predefinito. Il modificatore di accesso pubblico consente l'accesso a tutto ciò che è all'interno o all'esterno della classe o del pacchetto. Non c'è limite all'accesso nel caso del modificatore pubblico.
L'identificatore di visibilità protetta consente l'accesso solo alle sottoclassi che ereditano la classe in cui vengono dichiarati i membri protetti. Il modificatore di accesso privato consente la minima accessibilità con i membri dei dati privati di essere accessibile solo all'interno della classe.
I modificatori limitano l'ambito dei membri dati come classi, costruttori, metodi e variabili e definiscono il limite di quali classi o pacchetti possono accedervi. Gli specificatori di accesso incoraggiano l'incapsulamento e il riutilizzo in Java. Notare che le classi e l'interfaccia non possono essere protette o private.
=> Visita qui per imparare Java da zero.
Lettura consigliata
- Tutorial Java Reflection con esempi
- Tutorial JAVA per principianti: oltre 100 tutorial video Java pratici
- Introduzione al linguaggio di programmazione Java - Tutorial video
- Tutorial Java SWING: contenitore, componenti e gestione degli eventi
- Java String con String Buffer e String Builder Tutorial
- Distribuzione Java: creazione ed esecuzione di file JAR Java
- Java Virtual Machine: come JVM aiuta nell'esecuzione di applicazioni Java
- Tutorial su Java Collections Framework (JCF)