Java Access Modifiers (med eksempler)

I denne opplæringen vil vi lære om Java Access Modifier, dens typer og hvordan du bruker dem ved hjelp av eksempler.

Hva er tilgangsmodifikatorer?

I Java brukes tilgangsmodifikatorer for å angi tilgjengeligheten (synlighet) for klasser, grensesnitt, variabler, metoder, konstruktører, datamedlemmer og settermetodene. For eksempel,

 class Animal ( public void method1() (… ) private void method2() (… ) )

I eksemplet ovenfor har vi erklært to metoder: metode1 () og metode2 (). Her,

  • method1 er public- Dette betyr at den kan nås av andre klasser.
  • method2 er private- Dette betyr at det ikke er tilgang til andre klasser.

Legg merke til nøkkelordet publicog private. Dette er tilgangsmodifikatorer i Java. De er også kjent som synlighetsmodifikatorer.

Merk : Du kan ikke angi tilgangsmodifikator for getters-metoder.

Typer tilgangsmodifikator

Før du lærer om typer tilgangsmodifikatorer, må du sørge for at du vet om Java-pakker.

Det er fire nøkkelord for tilgangsmodifikatorer i Java, og de er:

Modifikator Beskrivelse
Misligholde erklæringer er bare synlige i pakken (pakke privat)
Privat erklæringer er kun synlige i klassen
Beskyttet erklæringer er synlige i pakken eller i alle underklasser
Offentlig erklæringer er synlige overalt

Standard tilgangsmodifikator

Hvis vi ikke eksplisitt spesifiserer noen tilgangsmodifikator for klasser, metoder, variabler osv., Blir standard tilgangsmodifikator som standard vurdert. For eksempel,

 package defaultPackage; class Logger ( void message()( System.out.println("This is a message"); ) )

Her har Logger-klassen standard tilgangsmodifikator. Og klassen er synlig for alle klassene som tilhører standardpakken. Imidlertid, hvis vi prøver å bruke Logger-klassen i en annen klasse utenfor defaultPackage, får vi en kompileringsfeil.

Privat tilgangsmodifikator

Når variabler og metoder er erklært private, kan de ikke nås utenfor klassen. For eksempel,

 class Data ( // private variable private String name; ) public class Main ( public static void main(String() main)( // create an object of Data Data d = new Data(); // access private variable and field from another class d.name = "Programiz"; ) )

I eksemplet ovenfor har vi erklært en privat variabel som heter navn og en privat metode som heter display(). Når vi kjører programmet, får vi følgende feil:

 Main.java:18: error: name has private access in Data d.name = "Programiz"; ^

Feilen genereres fordi vi prøver å få tilgang til den private variabelen og den private metoden til dataklassen fra hovedklassen.

Du lurer kanskje på hva om vi trenger tilgang til de private variablene. I dette tilfellet kan vi bruke metoden getters og setters. For eksempel,

 class Data ( private String name; // getter method public String getName() ( return this.name; ) // setter method public void setName(String name) ( this.name= name; ) ) public class Main ( public static void main(String() main)( Data d = new Data(); // access the private variable using the getter and setter d.setName("Programiz"); System.out.println(d.getName()); ) )

Utgang :

 Navnet er Programiz

I eksemplet ovenfor har vi en privat variabel som heter navn. For å få tilgang til variabelen fra den ytre klassen, har vi brukt metoder: getName()og setName(). Disse metodene kalles getter og setter på Java.

Her har vi brukt settermetoden ( setName()) for å tilordne verdien til variabelen og gettermetoden ( getName()) for å få tilgang til variabelen.

Vi har brukt thisnøkkelord inne i setName () for å referere til variabelen i klassen. For å lære mer om dette nøkkelordet, besøk Java dette nøkkelordet.

Merk : Vi kan ikke erklære klasser og grensesnitt private i Java. De nestede klassene kan imidlertid erklæres private. For å lære mer, besøk Java Nested og Inner Class.

Beskyttet tilgangsmodifikator

Når metoder og datamedlemmer blir deklarert protected, kan vi få tilgang til dem i samme pakke så vel som fra underklasser. For eksempel,

 class Animal ( // protected method protected void display() ( System.out.println("I am an animal"); ) ) class Dog extends Animal ( public static void main(String() args) ( // create an object of Dog class Dog dog = new Dog(); // access protected method dog.display(); ) )

Utgang :

 Jeg er et dyr

I eksemplet ovenfor har vi en beskyttet metode som heter display()innen dyreklassen. Dyreklassen arves av hundeklassen. For å lære mer om arv, besøk Java Arv.

Vi opprettet deretter en gjenstandshund av hundeklassen. Ved å bruke objektet prøvde vi å få tilgang til den beskyttede metoden til foreldreklassen.

Siden beskyttede metoder er tilgjengelige fra barneklassene, har vi tilgang til metoden for dyreklasse fra hundeklassen.

Merk : Vi kan ikke erklære klasser eller grensesnitt protectedi Java.

Public Access Modifier

Når metoder, variabler, klasser og så videre blir erklært public, kan vi få tilgang til dem hvor som helst. Den offentlige tilgangsmodifisereren har ingen omfangsbegrensning. For eksempel,

 // Animal.java file // public class public class Animal ( // public variable public int legCount; // public method public void display() ( System.out.println("I am an animal."); System.out.println("I have " + legCount + " legs."); ) ) // Main.java public class Main ( public static void main( String() args ) ( // accessing the public class Animal animal = new Animal(); // accessing the public variable animal.legCount = 4; // accessing the public method animal.display(); ) )

Utgang :

Jeg er et dyr. Jeg har 4 ben.

Her,

  • Den offentlige klassen Animal er tilgjengelig fra hovedklassen.
  • Den offentlige variabelen benCount er tilgjengelig fra hovedklassen.
  • Den offentlige metoden display()er tilgjengelig fra hovedklassen.

Tilgangsmodifikatorer oppsummert i en figur

Tilgjengelighet for alle tilgangsmodifikatorer i Java

Tilgangsmodifikatorer brukes hovedsakelig til innkapsling. Jeg kan hjelpe oss med å kontrollere hvilken del av et program som får tilgang til medlemmene i en klasse. Slik at misbruk av data kan forhindres. Hvis du vil lære mer om innkapsling, kan du gå til Java Encapsulation.

Interessante artikler...