logo

Modificadors d'accés a Java

A Java, els modificadors d'accés són eines essencials que defineixen com els membres d'una classe agraden els mètodes de variables i fins i tot la classe mateixa es pot accedir des d'altres parts del nostre programa.

Hi ha 4 tipus de modificadors d'accés disponibles a Java: 

Modificadors d'accés a Java-1' title=Modificadors d'accés a Java

Modificador d'accés privat

El modificador d'accés privat s'especifica mitjançant la paraula clau privat. Els mètodes o membres de dades declarats com a privats només són accessibles dins de la classe en què es declaren.



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

Sortida
Alice 

Explicació: L'accés directe al nom no està permès fora de la persona que fa complir l'encapsulació.

Modificador d'accés per defecte

Quan no s'especifica cap modificador d'accés per a un mètode de classe o membre de dades, es diu que té el modificador d'accés predeterminat per defecte. Això vol dir que només les classes del mateix paquet hi poden accedir.

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

Sortida
Tesla 

Explicació: No es pot accedir als membres amb accés predeterminat des de classes d'un paquet diferent.

Geeks.java: Classe per defecte dins del mateix paquet

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

GeeksNew.java: Classe per defecte d'un paquet diferent (per contrast)

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

Explicació:  En aquest exemple, el programa mostrarà l'error en temps de compilació quan intentem accedir a una classe modificadora per defecte des d'un paquet diferent.

Modificador d'accés protegit

El modificador d'accés protegit s'especifica mitjançant la paraula clau protected. Els mètodes o membres de dades declarats com a protegits són accessibles dins del mateix paquet o subclasses en paquets diferents.

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

Sortida
Access via subclass method: 100 0 

Explicació: La velocitat és accessible mitjançant mètodes de subclasse i altres classes del mateix paquet, però l'accés directe des d'un paquet diferent (no subclasse) fallaria.

Modificador d'accés públic

El modificador d'accés públic s'especifica mitjançant la paraula clau public. Els membres públics són accessibles des de qualsevol lloc del programa. No hi ha cap restricció a l'abast dels membres de les dades públiques.

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

Sortida
15 

Explicació: add() és accessible globalment a causa del modificador public.

Les classes o interfícies de primer nivell no es poden declarar com a privades perquè privat significa "només visible dins de la classe que l'adjunta".

Taula de comparació de modificadors d'accés a Java

mateixa_classe' loading='lazy' title=Modificador d'accés

Quan utilitzar cada modificador d'accés en projectes del món real

  • Privat: La idea s'hauria d'utilitzar l'accés tan restrictiu com sigui possible, de manera que s'hauria d'utilitzar el més privat possible.
  • Per defecte (Paquet-Privat): s'utilitza sovint en utilitats d'abast de paquets o classes d'ajuda.
  • Protegit: S'utilitza habitualment en dissenys basats en l'herència com les extensions de marc.
  • Públic : s'utilitza per a les classes de servei de punts finals de l'API o els mètodes d'utilitat compartits entre diferents parts d'una aplicació.


Crea un qüestionari