logo

Модификатори приступа у Јави

У Јави модификатори приступа су есенцијални алати који дефинишу како члановима класе попут метода променљивих, па чак и самој класи може да се приступи из других делова нашег програма.

Постоје 4 типа модификатора приступа доступних у Јави: 

Аццесс-Модифиерс-ин-Јава-1' title=Модификатори приступа у Јави

Модификатор приватног приступа

Модификатор приватног приступа је специфициран помоћу кључне речи привате. Методе или чланови података декларисани као приватни су доступни само унутар класе у којој су декларисани.



Java
class Person {  // private variable  private String name;  public void setName(String name) {  this.name = name; // accessible within class  }  public String getName() { return name; } } public class Geeks {  public static void main(String[] args)  {  Person p = new Person();  p.setName('Alice');  // System.out.println(p.name); // Error: 'name'  // has private access  System.out.println(p.getName());  } } 

Излаз
Alice 

Објашњење: Директан приступ имену није дозвољен изван особе која спроводи енкапсулацију.

Подразумевани модификатор приступа

Када модификатор приступа није наведен за метод класе или члана података, каже се да подразумевано има подразумевани модификатор приступа. То значи да само класе унутар истог пакета могу да му приступе.

Java
class Car {  String model; // default access } public class Main {    public static void main(String[] args){    Car c = new Car();  c.model = 'Tesla'; // accessible within the same package  System.out.println(c.model);  } } 

Излаз
Tesla 

Објашњење: Члановима са подразумеваним приступом не може се приступити из класа у другом пакету.

Геекс.јава: Подразумевана класа у оквиру истог пакета

Java
// default access modifier  package p1;  // Class Geek is having  // Default access modifier  class Geek  {   void display()   {   System.out.println('Hello World!');   }  } 

ГеексНев.јава: Подразумевана класа из другог пакета (за контраст)

C++
// package with default modifier  package p2;  import p1.*; // importing package p1 // This class is having  // default access modifier  class GeekNew {   public static void main(String args[]) {     // Accessing class Geek from package p1   Geek o = new Geek();   o.display();   }  } 

Објашњење:  У овом примеру програм ће показати грешку у времену компајлирања када покушамо да приступимо подразумеваној класи модификатора из другог пакета.

Модификатор заштићеног приступа

Модификатор заштићеног приступа је специфициран помоћу кључне речи протецтед. Методе или чланови података декларисани као заштићени су доступни у оквиру истог пакета или подкласа у различитим пакетима.

Java
class Vehicle {  protected int speed; // protected member } class Bike extends Vehicle {  void setSpeed(int s)  {  speed = s; // accessible in subclass  }  int getSpeed()  {  return speed; // accessible in subclass  } } public class Main {  public static void main(String[] args){    Bike b = new Bike();  b.setSpeed(100);  System.out.println('Access via subclass method: '  + b.getSpeed());  Vehicle v = new Vehicle();  System.out.println(v.speed);  } } 

Излаз
Access via subclass method: 100 0 

Објашњење: брзина је доступна преко метода поткласе и других класа у истом пакету, али директан приступ из другог пакета (не-подкласе) не би успео.

Модификатор јавног приступа

Модификатор јавног приступа је специфициран помоћу кључне речи публиц. Јавни чланови су доступни са свих страна у програму. Нема ограничења у погледу обима јавних података чланова.

Java
class MathUtils {     public static int add(int a int b) {  return a + b;  } } public class Main {    public static void main(String[] args) {    System.out.println(MathUtils.add(5 10)); // accessible anywhere  } } 

Излаз
15 

Објашњење: адд() је глобално доступан због модификатора публиц.

Класе или интерфејси највишег нивоа се не могу декларисати као приватне јер приватно значи 'видљиво само у оквиру класе која га окружује'.

Табела поређења модификатора приступа у Јави

иста_класа' loading='lazy' title=Модификатор приступа

Када користити сваки модификатор приступа у пројектима из стварног света

  • Приватно: Идеја би требало да буде што је могуће рестриктивнији приступ, тако да приватни треба да се користи што је више могуће.
  • Подразумевано (Пацкаге-Привате): Често се користи у услужним програмима у оквиру пакета или помоћним класама.
  • Заштићено: Обично се користи у дизајнима заснованим на наслеђивању као што су проширења оквира.
  • Јавно : Ово се користи за класе услуга крајњих тачака АПИ-ја или услужне методе које се деле у различитим деловима апликације.


Креирај квиз