Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> Java

Java-toegangsmodificaties

Java-toegangsmodificaties

In deze zelfstudie leren we over de Java Access Modifier, zijn typen en hoe u deze kunt gebruiken aan de hand van voorbeelden.

Wat zijn toegangsmodificaties?

In Java worden toegangsmodifiers gebruikt om de toegankelijkheid (zichtbaarheid) van klassen, interfaces, variabelen, methoden, constructors, gegevensleden en de settermethoden in te stellen. Bijvoorbeeld,

class Animal {
    public void method1() {...}

   private void method2() {...}
}

In het bovenstaande voorbeeld hebben we 2 methoden gedeclareerd:methode1() en methode2(). Hier,

  • methode1 is public - Dit betekent dat het toegankelijk is voor andere klassen.
  • methode2 is private - Dit betekent dat het niet toegankelijk is voor andere klassen.

Let op het trefwoord public en private . Dit zijn toegangsmodifiers in Java. Ze worden ook wel zichtbaarheidsmodifiers genoemd.

Opmerking :U kunt de toegangsmodificator van getters-methoden niet instellen.


Typen toegangsmodificatie

Voordat u meer te weten komt over typen toegangsmodifiers, moet u eerst kennis hebben van Java-pakketten.

Er zijn vier sleutelwoorden voor toegangsmodificaties in Java en deze zijn:

Modificatie Beschrijving
Standaard declaraties zijn alleen zichtbaar binnen het pakket (pakket privé)
Privé declaraties zijn alleen zichtbaar binnen de klas
Beveiligd declaraties zijn zichtbaar binnen het pakket of alle subklassen
Openbaar verklaringen zijn overal zichtbaar

Standaard toegangsmodifier

Als we niet expliciet een toegangsmodifier specificeren voor klassen, methoden, variabelen, enz., dan wordt standaard de standaard toegangsmodifier overwogen. Bijvoorbeeld,

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

Hier, de Logger class heeft de standaard toegangsmodifier. En de klasse is zichtbaar voor alle klassen die behoren tot het defaultPackage pakket. Als we echter proberen de Logger class in een andere klasse buiten defaultPackage, krijgen we een compilatiefout.


Private Access Modifier

Wanneer variabelen en methoden worden gedeclareerd private , zijn ze niet toegankelijk buiten de klas. Bijvoorbeeld,

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";
    }
}

In het bovenstaande voorbeeld hebben we een privévariabele gedeclareerd met de naam naam en een privémethode genaamd display() . Wanneer we het programma uitvoeren, krijgen we de volgende foutmelding:

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

De fout wordt gegenereerd omdat we proberen toegang te krijgen tot de private variabele en de private methode van de Data klasse uit de Main klasse.

Je vraagt ​​​​je misschien af ​​​​wat als we toegang moeten krijgen tot die privévariabelen. In dit geval kunnen we de getters en setters methode gebruiken. Bijvoorbeeld,

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());
    }
}

Uitvoer :

The name is Programiz

In het bovenstaande voorbeeld hebben we een privévariabele met de naam naam . Om toegang te krijgen tot de variabele vanuit de buitenste klasse, hebben we methoden gebruikt:getName() en setName() . Deze methoden worden in Java getter en setter genoemd.

Hier hebben we de setter-methode gebruikt (setName() ) om waarde toe te kennen aan de variabele en de gettermethode (getName() ) om toegang te krijgen tot de variabele.

We hebben this gebruikt sleutelwoord binnen de setName() om te verwijzen naar de variabele van de klasse. Ga voor meer informatie over dit zoekwoord naar Java dit zoekwoord.

Opmerking :We kunnen klassen en interfaces niet privé verklaren in Java. De geneste klassen kunnen echter privé worden verklaard. Ga voor meer informatie naar Java Nested en Inner Class.


Protected Access Modifier

Wanneer methoden en gegevensleden worden gedeclareerd protected , we hebben er toegang toe binnen hetzelfde pakket als vanuit subklassen. Bijvoorbeeld,

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();
    }
}

Uitvoer :

I am an animal

In het bovenstaande voorbeeld hebben we een beveiligde methode genaamd display() in het Dier klas. Het dier klasse wordt geërfd door de Hond klas. Ga voor meer informatie over overerving naar Java Overerving.

We hebben toen een object gemaakt hond van de Hond klas. Met behulp van het object probeerden we toegang te krijgen tot de beveiligde methode van de bovenliggende klasse.

Omdat beveiligde methoden toegankelijk zijn vanuit de onderliggende klassen, hebben we toegang tot de methode van Animal klas van de Hond klasse.

Opmerking :We kunnen geen klassen of interfaces declareren protected in Java.


Aanpasser voor openbare toegang

Wanneer methoden, variabelen, klassen, enzovoort worden gedeclareerd public , dan hebben we er overal toegang toe. De modifier voor openbare toegang heeft geen bereikbeperking. Bijvoorbeeld,

// 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();
    }
}

Uitvoer :

I am an animal.
I have 4 legs.

Hier,

  • De openbare klasse Animal is toegankelijk via de Hoofd klas.
  • De openbare variabele legCount is toegankelijk via de Hoofd klas.
  • De openbare methode display() is toegankelijk via de Hoofd klas.

Toegangsmodificaties samengevat in één figuur

Toegangsmodificatoren worden voornamelijk gebruikt voor inkapseling. Ik kan ons helpen om te bepalen welk deel van een programma toegang heeft tot de leden van een klas. Zodat misbruik van data kan worden voorkomen. Bezoek Java Encapsulation voor meer informatie over inkapseling.


Java

  1. C# Toegangsmodificaties
  2. Java-operators
  3. Java-opmerkingen
  4. Java voor elke lus
  5. Java-strings
  6. Java-interface
  7. Java anonieme klasse
  8. Java proberen-met-bronnen
  9. Java-annotaties
  10. Java-beweringen
  11. Java-vector