access modifiers java tutorial with examples
Aquest vídeo tutorial explica què són els modificadors d'accés a Java i com s'utilitzen els modificadors d'accés predeterminat, públic, protegit i privat amb l'ajuda d'exemples:
A Java, tenim classes i objectes. Aquestes classes i objectes es contenen en un paquet. A més, les classes poden tenir classes imbricades, mètodes, variables, etc. Com que Java és un llenguatge de programació orientat a objectes, hem de seguir l'encapsulació en què amaguem els detalls no desitjats.
Java proporciona entitats anomenades 'Modificadors d'accés o especificadors d'accés' que ens ajuden a restringir l'abast o la visibilitat d'un paquet, classe, constructor, mètodes, variables o altres membres de dades. Aquests modificadors d’accés també s’anomenen 'Especificadors de visibilitat'.
Mitjançant l’ús dels especificadors d’accés, es pot restringir l’accés a un mètode de classe o variable determinat o ocultar-lo de les altres classes.
=> Consulteu TOTS els tutorials de Java aquí.
quina certificació de proves de programari és la millor
Què aprendreu:
- Vídeo tutorial sobre modificadors d'accés a Java
- Modificadors d'accés a Java
- Tipus de modificadors d'accés a Java
- Conclusió
Vídeo tutorial sobre modificadors d'accés a Java
Modificadors d'accés a Java
Els especificadors d'accés també determinen a quins membres de dades (mètodes o camps) d'una classe poden accedir altres membres de dades de classes o paquets, etc.
Els modificadors a Java són de dos tipus:
# 1) Modificadors d'accés
Els modificadors d’accés a Java ens permeten establir l’abast o l’accessibilitat o la visibilitat d’un membre de dades, ja sigui un camp, un constructor, una classe o un mètode.
# 2) Modificadors sense accés
Java també proporciona especificadors de no accés que s'utilitzen amb classes, variables, mètodes, constructors, etc. Els especificadors / modificadors de no accés defineixen el comportament de les entitats a la JVM.
Alguns dels especificadors / modificadors sense accés a Java són:
- estàtic
- final
- resum
- transitòria
- volàtil
- sincronitzada
- nadiu
Hem tractat paraules clau estàtiques, sincronitzades i volàtils en els nostres tutorials anteriors. Cobrirem la resta de modificadors sense accés als nostres futurs tutorials, ja que estan fora de l’abast d’aquest tutorial.
Tipus de modificadors d'accés a Java
Java proporciona quatre tipus d’especificadors d’accés que podem utilitzar amb classes i altres entitats.
Aquests són:
# 1) Valor per defecte: Sempre que no s’especifica un nivell d’accés específic, s’assumeix que és “predeterminat”. L'abast del nivell per defecte es troba dins del paquet.
# 2) Públic: Aquest és el nivell d’accés més comú i sempre que s’utilitza l’especificador d’accés públic amb una entitat, aquesta entitat concreta és accessible des de dins o fora de la classe, dins o fora del paquet, etc.
# 3) Protegit: El nivell d'accés protegit té un abast dins del paquet. Una entitat protegida també és accessible fora del paquet mitjançant la classe heretada o la classe secundària.
# 4) Privat: Quan una entitat és privada, no es pot accedir a aquesta entitat fora de la classe. Només es pot accedir a una entitat privada des de la classe.
Podem resumir els modificadors d'accés a la taula següent.
Especificador d'accés | Dins de la classe | Paquet interior | Subclase de paquets externs | Paquet exterior |
---|---|---|---|---|
Privat | Sí | no | no | no |
Per defecte | Sí | Sí | no | no |
Protegit | Sí | Sí | Sí | no |
Públic | Sí | Sí | Sí | Sí |
A continuació, analitzarem detalladament cadascun d’aquests especificadors d’accés.
Especificadors d'accés per defecte
Un modificador d'accés per defecte a Java no té cap paraula clau específica. Sempre que no s’especifica el modificador d’accés, se suposa que és el predeterminat. Les entitats com les classes, els mètodes i les variables poden tenir accés predeterminat.
Es pot accedir a una classe per defecte dins del paquet, però no és accessible des de fora del paquet, és a dir, totes les classes dins del paquet en què es defineix la classe per defecte poden accedir a aquesta classe.
De la mateixa manera, també es pot accedir a un mètode o variable per defecte dins del paquet on es defineixen i no fora del paquet.
El programa següent mostra el modificador d'accés per defecte a 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 } }
Sortida:
Al programa anterior, tenim una classe i un mètode al seu interior sense cap modificador d’accés. Per tant, tant la visualització de classe com la de mètodes tenen accés per defecte. Després veiem que en el mètode podem crear directament un objecte de la classe i anomenar-lo.
Modificador d'accés públic
Es pot accedir a una classe, un mètode o un camp de dades especificat com a 'públic' des de qualsevol classe o paquet del programa Java. L'entitat pública és accessible tant dins del paquet com fora d'aquest. En general, el modificador d'accés públic és un modificador que no restringeix en absolut l'entitat.
class A { public void display() { System.out.println('SoftwareTestingHelp!!'); } } class Main { public static void main(String args()) { A obj = new A (); obj.display(); } }
Sortida:
Especificador d'accés protegit
L'especificador d'accés protegit permet l'accés a les entitats mitjançant subclasses de la classe en què es declara l'entitat. Tant se val si la classe es troba en el mateix paquet o en un paquet diferent, però sempre que la classe que intenti accedir a una entitat protegida sigui una subclasse d’aquesta classe, és accessible.
Tingueu en compte que una classe i una interfície no es poden protegir, és a dir, no podem aplicar modificadors protegits a classes i interfícies.
El modificador d’accés protegit s’utilitza normalment en les relacions pares-fills.
El programa següent mostra l’ús del modificador d’Accés protegit a 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 } }
Sortida:
Modificador d'accés privat
El modificador d’accés ‘privat’ és el que té un nivell d’accessibilitat més baix. Els mètodes i els camps que es declaren privats no són accessibles fora de la classe. Només són accessibles dins de la classe que té com a membres aquestes entitats privades.
Tingueu en compte que les entitats privades ni tan sols són visibles per a les subclasses de la classe. Un modificador d'accés privat garanteix l'encapsulació a Java.
Alguns punts a destacar sobre el modificador d'accés privat.
- El modificador d'accés privat no es pot utilitzar per a classes i interfícies.
- L’abast de les entitats privades (mètodes i variables) es limita a la classe en què es declaren.
- Una classe amb un constructor privat no pot crear un objecte de la classe des de cap altre lloc com el mètode principal. (Més detalls sobre constructors privats s’han explicat al nostre tutorial anterior).
El programa Java següent utilitza un modificador d’accés privat.
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 } }
Sortida:
El programa anterior mostra un error de compilació ja que intentem accedir a membres de dades privades mitjançant l'objecte class.
Però hi ha un mètode per accedir a variables de membre privat. Aquest mètode utilitza getters i definidors a Java. Per tant, proporcionem un mètode public get a la mateixa classe en què es declara la variable privada perquè getter pugui llegir el valor de la variable privada.
De la mateixa manera, proporcionem un mètode de configurador públic que ens permet establir un valor per a la variable privada.
El següent programa Java mostra l’ús de mètodes getter i setter per a variables privades a 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()); } }
Sortida:
El programa anterior té una classe amb una variable de cadena privada. Proporcionem un mètode de membre getName públic que retorna el valor de la variable privada. També proporcionem un mètode setName públic a la classe que pren una cadena com a argument i l’assigna a la variable privada.
quin és el millor descarregador de mp3 gratuït
Com que tots dos mètodes són públics, podem accedir-hi fàcilment mitjançant l'objecte de la classe. D’aquesta manera podem superar l’error de compilació que apareix cada vegada que intentem accedir als membres de dades privades de la classe.
Preguntes freqüents
P # 1) Quants modificadors d'accés hi ha a Java?
Resposta: Java proporciona quatre modificadors, és a dir, per defecte, públic, protegit i privat.
Q # 2) Què són els modificadors d'accés i els modificadors sense accés a Java?
Resposta: Els modificadors d'accés defineixen la visibilitat o l'abast d'una entitat del programa com una classe o un mètode o una variable o un constructor. Els modificadors sense accés defineixen el comportament d'una entitat. Per exemple, un mètode o bloc sincronitzat indica que pot funcionar en un entorn multithreading, una variable final indica que és una constant.
P # 3) Per què són importants els Especificadors d'accés?
Resposta: Els modificadors especifiquen a quina classe pot accedir a quines altres classes o mètodes o variables. Mitjançant els especificadors d’accés podem limitar l’accés a diverses classes, mètodes, constructors i variables i també garantir l’encapsulació i la reutilització de les entitats Java.
Q # 4) Quins modificadors no s'utilitzen per a la classe?
Resposta: Els modificadors protegits i privats no s’utilitzen per a una classe.
P # 5) Què són els modificadors sense accés?
Resposta: Els modificadors que defineixen el comportament d’entitats com la classe, el mètode o les variables amb què s’associen són modificadors sense accés. Com el seu nom indica, no especifiquen l'accés. Java proporciona diversos modificadors sense accés, com estàtic, final, sincronitzat, volàtil, abstracte, etc.
Més informació sobre els modificadors de visibilitat
Java proporciona molts modificadors per accedir a la variable, mètodes i constructors.
Hi ha 4 tipus de variables d’accés a Java:
- Privat
- Públic
- Per defecte
- Protegit
# 1) Privat
Si una variable es declara privada, es pot accedir a la classe. Aquesta variable no estarà disponible fora de la classe. Per tant, els membres externs no poden accedir als membres privats.
Nota: Les classes i les interfícies no poden ser privades.
# 2) Públic
Totes les altres classes del projecte poden accedir als mètodes / variables amb modificadors públics.
# 3) Protegit
Si es declara una variable com a protegida, es pot accedir a la mateixa dins de les mateixes classes de paquets i subclases de qualsevol altre paquet.
Nota: El modificador d'accés protegit no es pot utilitzar per a classes i interfícies.
# 4) Modificador d'accés per defecte
Si es defineix una variable / mètode sense cap paraula clau modificadora d’accés, tindrà accés modificador per defecte.
Modificadors d'accés | Visibilitat |
---|---|
Públic | Visible per a totes les classes. |
Protegit | Visible per a les classes amb el paquet i les subclases d'altres paquets. |
Sense modificador d'accés (per defecte) | Visible per a les classes amb el paquet |
privat | Visible a la classe. No és accessible fora de la classe. |
Classe de demostració:
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; } }
Accedir als membres de la classe d'una altra classe:
public class TestAccessModifier { public static void main(String() args) { AccessModifiersDemo accessobj =new AccessModifiersDemo(); accessobj.calculateSalary(); } }
Sortida:
implementació de classificació de fusió c ++
Accés als membres públics:
public class TestAccessModifier { public static void main(String() args) { AccessModifiersDemo accessobj =new AccessModifiersDemo(); System.out.println(accessobj.printEmpName('Bobby')); } }
Sortida:
Bobby
Punts importants:
- Els especificadors d'accés defineixen la visibilitat de la classe.
- Si no s'esmenta cap paraula clau, és el modificador d'accés per defecte.
- Quatre modificadors a Java inclouen públics, privats, protegits i predeterminats.
- Les paraules clau privades i protegides no es poden utilitzar per a classes i interfícies.
Conclusió
En aquest tutorial, hem explorat detalladament els modificadors d'accés a Java. Java proporciona quatre tipus de modificadors d’accés o especificadors de visibilitat, és a dir, per defecte, públic, privat i protegit. El modificador per defecte no té associada cap paraula clau.
Quan una classe, un mètode o una variable no té un especificador d'accés associat, suposem que té accés per defecte. El modificador d'accés públic permet l'accés a tot, ja sigui dins o fora de la classe o del paquet. No hi ha límit d’accés en el cas del modificador públic.
L'especificador de visibilitat protegit permet l'accés només a les subclasses que hereten la classe en què es declaren els membres protegits. El modificador d’accés privat permet que la mínima accessibilitat dels membres de dades privades sigui accessible només dins de la classe.
Els modificadors limiten l’abast dels membres de dades com ara classes, constructors, mètodes i variables i defineixen el límit de quines classes o paquets hi poden accedir. Els especificadors d'accés fomenten l'encapsulació i la reutilització a Java. Tingueu en compte que les classes i la interfície no es poden protegir ni privar.
=> Visiteu aquí per aprendre Java des de zero.
Lectura recomanada
- Tutorial de reflexió de Java amb exemples
- Tutorial JAVA per a principiants: més de 100 tutorials pràctics de vídeo Java
- Introducció al llenguatge de programació Java: vídeo tutorial
- Tutorial Java SWING: Gestió de contenidors, components i esdeveniments
- Java String amb buffer de cadenes i tutorial de Generador de cadenes
- Desplegament de Java: creació i execució del fitxer JAR de Java
- Màquina virtual Java: com ajuda JVM a executar aplicacions Java
- Tutorial sobre Java Collections Framework (JCF)