Modifikatori pristupa u Javi

Modifikatori pristupa u Javi

Postoje dva tipa modifikatora u Javi: pristupni modifikatori i ne-pristupni modifikatori. Pristupni modifikatori u Javi specificiraju dostupnost (scope) podataka-članova, metoda, konstruktora ili klase. Postoje 4 tipa java modifikatora pristupa:
  1. private
  2. default
  3. protected
  4. public
Postoji mnogo ne-pristupnih modifikatora kao što su static, abstract, synchronized, native, volatile, transient itd. Ovde ćemo razmotriti modifikatore pristupa.

1) private modifikator pristupa Modifikator pristupa private je dostupan samo unutar klase. Jednostavan primer private modifikatora pristupa U ovom primeru, kreiraćemo dve klase A i Simple. A klasa sadrži private podatak-član i private metod. Pristupićemo ovim private članovima izvan klase, tako da će se javiti compile time error.
1
2
3
4
5
6
7
8
9
10
11
12
class A{ 
private int data=40
private void msg(){System.out.println("Hello java");} 
  
public class Simple{ 
 public static void main(String args[]){ 
   A obj=new A(); 
   System.out.println(obj.data); //Compile Time Error 
   obj.msg(); //Compile Time Error 
   
}
Uloga private konstruktora Ako učinimo bilo koji konstruktor u klasi private, nećemo moći kreirati instancu te klase izvan te klase. Na primer:
1
2
3
4
5
6
7
8
9
class A{ 
private A(){} //private konstruktor 
void msg(){System.out.println("Hello java");} 
public class Simple{ 
 public static void main(String args[]){ 
   A obj=new A(); //Compile Time Error 
 
}
Napomena 1: Klasa ne može biti private ili protected osim ugnježđene klase.

2) default modifikator pristupa Ako ne koristimo nikakav modifikator, to se tretira kao default modifikator. Default modifikator je dostupan samo unutar paketa. Primer default modifikatora pristupa U ovom primeru, kreiraćemo dva paketa pack i mypack. Pristupamo A klasi izvan njenog paketa, pošto A klasa nije public, njoj se ne može pristupiti izvan paketa.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
//sačuvano od A.java 
package pack; 
class A{ 
  void msg(){System.out.println("Hello");} 
//sačuvano od B.java 
package mypack; 
import pack.*; 
class B{ 
  public static void main(String args[]){ 
   A obj = new A(); //Compile Time Error 
   obj.msg(); //Compile Time Error 
  
}


3) protected modifikator pristupa
Protected modifikator pristupa je dostupan unutar paketa i izvan paketa ali samo preko nasleđivanja.
Protected modifikator pristupa može se primeniti na podatak-član, metod i konstruktor. Ne može se primeniti na klasu.

Primer protected modifikatora pristupa
U ovom primeru, kreiraćemo dva paketa pack i mypack. A klasa paketa pack je public, tako da joj se može pristupiti izvan paketa. Ali msg metod ovog paketa je deklarisan kao protected, tako da mu se može pristupiti izvan klase samo preko nasleđivanja.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//sačuvano od A.java 
    package pack; 
    public class A{ 
    protected void msg(){System.out.println("Hello");} 
    
    //sačuvano od B.java 
    package mypack; 
    import pack.*; 
      
    class B extends A{ 
      public static void main(String args[]){ 
       B obj = new B(); 
       obj.msg(); 
      
    }
Ispis na ekranu:
Hello

4) public modifikator pristupa
Public modifikator pristupa je dostupan svuda. On ima najširi domet među svim modifikatorima.
Primer public modifikatora pristupa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    //sačuvano od A.java 
      
    package pack; 
    public class A{ 
    public void msg(){System.out.println("Hello");} 
    
    //sačuvano od B.java 
      
    package mypack; 
    import pack.*; 
      
    class B{ 
      public static void main(String args[]){ 
       A obj = new A(); 
       obj.msg(); 
      
    }
Ispis na ekranu:
Hello
Razumevanje svih Java modifikatora pristupa Prikažimo modifikatore pristupa jednostavnom tabelom.

Modifikator pristupa

unutar klase

unutar paketa

izvan paketa samo preko podklase

izvan paketa

Private DA NE NE NE
Default DA DA NE NE
Protected DA DA DA NE
Public DA DA DA DA
Java modifikatori pristupa sa preklapanjem metoda Ako preklapamo neki metod, preklopljeni metod (tj. deklarisan u podklasi) ne sme biti restriktivniji.
1
2
3
4
5
6
7
8
9
10
11
class A{ 
protected void msg(){System.out.println("Hello java");} 
  
public class Simple extends A{ 
void msg(){System.out.println("Hello java");} //Compile Time Error 
 public static void main(String args[]){ 
   Simple obj=new Simple(); 
   obj.msg(); 
   
}
Default modifikator je restriktivniji nego protected. Zato se javio compile time error. Akcesori i mutatori Poznato je da su instancni podaci uglavnom deklarisani sa vidljivošću (pristupom) private. Zbog toga, klasa obično obezbeđuje servise za pristup i modifikovanje vrednosti podataka. Akcesor metod obezbeđuje pristup samo za čitanje (read-only) određenoj vrednosti. Isto tako, mutator metod, ponekad nazvan i modifikator metod, menja određenu vrednost. Generalno, ime akcesor metoda ima formu getX, gdje je X vrijednost kojoj on obezbjeđuje pristup. Isto tako, ime mutator metoda ima formu setX, gdje je X vrijednost koja se podešava. Zbog toga se ovi tipovi metoda ponekad nazivaju “geteri“ i “seteri“.

Comments

comments

Close Menu
Show Buttons
Hide Buttons