Index

Related

ClassPackageSubclassWorld
publicYYYY
protectedYYYN
defaultYYNN
privateYNNN

Java Access Modifiers

Gli access modifiers, o modificatori di accesso, sono parole chiave in Java che consentono di controllare il livello di visibilità e accessibilità degli elementi (classi, attributi e metodi) all’interno di un programma.

Private

  • Gli elementi dichiarati come private sono accessibili solo all’interno della classe in cui sono definiti.
  • Nessuna altra classe, nemmeno le sottoclassi, può accedere direttamente agli elementi private.
  • Questo modificatore di accesso è il più restrittivo e garantisce il massimo livello di protezione dei dati.

Protected

  • Gli elementi dichiarati come protected sono accessibili all’interno della stessa classe, all’interno dello stesso package e nelle sottoclassi, anche se si trovano in un package diverso.
  • Le sottoclassi possono accedere agli elementi protected della superclasse.
  • Questo modificatore di accesso è utile quando si desidera consentire l’accesso alle sottoclassi, ma non all’esterno del package.

Default

  • Quando non si specifica alcun modificatore di accesso, Java utilizza il modificatore di accesso default.
  • Gli elementi default sono accessibili all’interno dello stesso package, ma non sono accessibili da altri package.
  • Questo modificatore di accesso offre un livello di protezione intermedio tra private e public.

Public

  • Gli elementi dichiarati come public sono accessibili ovunque nel programma, sia all’interno che all’esterno della classe in cui sono definiti.
  • Nessuna restrizione di accesso viene applicata agli elementi public.
  • Questo modificatore di accesso offre il massimo livello di visibilità e accessibilità.

L’utilizzo appropriato dei modificatori di accesso è fondamentale per l’incapsulamento e la modularità del codice Java. Essi consentono di nascondere i dettagli di implementazione e di esporre solo le informazioni necessarie all’esterno, promuovendo la riusabilità, la manutenibilità e la sicurezza del software.


Esempi

Public

class MyClass {     
  private int x; // Accessibile solo all'interno della classe 
}

Protected

class SuperClass {
  protected int z; // Accessibile all'interno della classe, del package e nelle sottoclassi 
} 
 
class SubClass extends SuperClass {     
  // Può accedere a z 
}

Default

package com.example; 
 
class MyClass {     
  int y; // Accessibile all'interno del package com.example 
}

Public

public class MyClass {     
  public int w; // Accessibile ovunque 
}