Java - Pristupni modifikatori


Šta su modifikatori pristupa?

U Javi se modifikatori pristupa koriste za postavljanje pristupačnosti (vidljivosti) klasa, interfejsa, varijabli, metoda, konstruktora, članova podataka i metoda postavljača. Na primjer:

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

   private void method2() {...}
}

U gornjem primjeru deklarisali smo dvije metode: method1() i method2(). Ovdje je:

Obratite pažnju na ključnu riječ javni (public) i privatni (private). Ovo su modifikatori pristupa u Javi. Poznati su i kao modifikatori vidljivosti.



Vrste modifikatora pristupa

Prije nego što naučite o vrstama modifikatora pristupa, pobrinite se da znate o Java paketima. U Javi postoje četiri ključne riječi modifikatora pristupa, a to su:

Modifikator Opis
Default deklaracije su vidljive samo unutar paketa (privatni paket)
Private deklaracije su vidljive samo unutar klase
Protected deklaracije su vidljive unutar paketa ili svih potklasa
Public deklaracije su vidljive svugdje


Zadani modifikator pristupa

Ako eksplicitno ne navedemo nijedan modifikator pristupa za klase, metode, varijable itd., tada se prema zadanim postavkama uzima u obzir zadani modifikator pristupa. Na primjer:

package defaultPackage;
class Logger {
    void message(){
        System.out.println("Ovo je poruka");
    }
}

Ovdje klasa Logger ima zadani modifikator pristupa. A klasa je vidljiva svim klasama koje pripadaju defaultPackage paketu. Međutim, ako pokušamo koristiti klasu Logger u drugoj klasi izvan defaultPackage, dobićemo grešku kompilacije.



Modifikator privatnog pristupa

Kada se varijable i metode proglase privatnim (private), ne može im se pristupiti izvan klase. Na primjer:

class Data {
    // privatna (private) varijabla
    private String name;
}

public class Main {
    public static void main(String[] main){

        // stvoriti objekt podataka
        Data d = new Data();

        // pristup privatnoj varijabli i polju iz druge klase
        d.name = "IT TUTORIJALI";
    }
}

U gornjem primjeru proglasili smo privatnu (private) varijablu koja se zove name i privatnu (private) metodu koja se zove display(). Kada pokrenemo program, dobit ćemo sljedeću grešku:

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

Greška se generiše, jer pokušavamo pristupiti privatnoj (private) varijabli i privatnoj (private) metodi klase Data iz klase Main. Možda se pitate što ako trebamo pristupiti tim privatnim (private) varijablama. U ovom slučaju možemo koristiti metodu getera i postavljača (eng. getters and setters). Na primjer:

class Data {
    private String name;

    // getter metoda
    public String getName() {
        return this.name;
    }
    // setter metoda
    public void setName(String name) {
        this.name= name;
    }
}
public class Main {
    public static void main(String[] main){
        Data d = new Data();

        // pristupite privatnoj varijabli koristeći getter i setter
        d.setName("IT TUTORIJALI");
        System.out.println(d.getName());
    }
}

U gornjem primjeru imamo privatnu varijablu koja se zove name. Da bismo pristupili varijabli iz vanjske klase, koristili smo metode: getName() i setName(). Ove metode se u Javi nazivaju se getter i setter.

Ovdje smo koristili metodu setter (setName()) za dodjeljivanje vrijednosti varijabli, a metodu getter (getName()) za pristup varijabli. Koristili smo ovu ključnu riječ unutar setName() za upućivanje na varijablu klase.



Modifikator zaštićenog pristupa

Kada se metode i članovi podataka proglase zaštićenima, možemo im pristupiti u istom paketu, kao i iz podklasa. Na primjer:

class Animal {
    // protected metoda
    protected void display() {
        System.out.println("Ja volim životinje");
    }
}

class Dog extends Animal {
    public static void main(String[] args) {

        // stvoriti objekt klase Dog
        Dog dog = new Dog();
         // prihvatanje protected metode
        dog.display();
    }
}

U gornjem primjeru imamo zaštićenu metodu koja se zove display() unutar klase Animal. Klasu Animal nasljeđuje klasa Dog. Zatim smo kreirali klasu Dog. Koristeći objekt pokušali smo pristupiti zaštićenom načinu roditeljske klase. Budući da se zaštićenim metodama može pristupiti iz podređenih klasa, možemo pristupiti metodi klase Animal iz klase Dog.



Modifikator javnog pristupa

Kada se metode, varijable, klase i tako dalje proglase javnim (public), tada im možemo pristupiti s bilo kog mjesta. Modifikator javnog pristupa nema ograničenje opsega. Na primjer:

// Animal.java file
// public class
public class Animal {
    // public varijabla
    public int legCount;

    // public metoda
    public void display() {
        System.out.println("Ja volim životinje.");
        System.out.println("Ja imam " + legCount + " nogu.");
    }
}

// Main.java
public class Main {
    public static void main( String[] args ) {
        // prihvatanje public class
        Animal animal = new Animal();

        // pristupanje public variabli
        animal.legCount = 4;
        // pristupanje public metodi
        animal.display();
    }
}

Ovdje je:



Modifikatori pristupa sažeti u jednoj slici


Modifikatori pristupa uglavnom se koriste za enkapsulaciju. Mogu vam pomoći da kontrolišemo koji dio programa može pristupiti članovima klase. Tako da se zloupotreba podataka može spriječiti.