Sono parole riservate che forniscono al compilatore informazioni sulla natura del codice, dei dati e delle classi contenuti nel file sorgente.

Essi regolano la possibilità di accedere a una classe, a un metodo o a un attributo, da parte di una classe o di un metodo, esterno o interno alla classe stessa.

Public

Il metodo o la variabile è visibile ovunque.

public class Animale
{
	public int count;
 
	public static void main (String[] args)
	{
		Animale a = new Animale();
		a.count = 20;
	}
}

Private

E’ il modificatore più restrittivo. Il metodo o la variabile è visibile solo all’interno della stessa classe, quindi non è visibile/utilizzabile all’esterno della classe stessa.

public class Animale 
{
	private int count;
}
 
public class Mucca extends Animale 
{
	public void hello()
	{
		count = 30;// errore di compilazione, variabile non visibile
	}
}
 
public class Prova 
{
	public static void main(String[] args)
	{
		Mucca a = new Mucca();
		a.count = 20;// errore di compilazione, variabile non visi-bile
	}
}

Protected

Il metodo o la variabile è visibile solo dalle classi dello stesso package e da tutte le sottoclassi.

package it;
 
public class Animale 
{
	protected int count;
}
package it;
 
public class Mucca extends Animale 
{
	public void hello() 
	{
		count = 30;
	}
}
package it;
 
public class Prova 
{
	public static void main(String[] args) 
	{
		Mucca a = new Mucca();
		a.count = 20;
	}
}
package com;
 
import it.Mucca;
 
public class cane 
{
	public static void main(String[] args) 
	{
		Mucca a = new Mucca();
		a.count = 20;// errore di compilazione, campo non accessabi-le (package diverso, siamo in “com” mentre animale è in “it”)
	}
}

Default

Il metodo o la variabile è visibile dallo stesso package e dalle sottoclassi se sono nello stesso package.

package it;
 
public class Animale 
{
	int count;
}
package it;
 
public class Mucca extends Animale 
{
	public void hello() 
	{
	count = 30;
	}
}
 
package com;
import it.Animale;
import it.Mucca;
 
public class cane extends Animale
{
	public void hello() 
	{
		count = 30;// errore di compilazione, campo non accessabile (siamo in package diversi, rispetto a animale)
	}
 
	public static void main(String[] args) 
	{
		Mucca a = new Mucca();
		a.count = 20;// errore di compilazione, campo non accessabi-le (siamo in package diversi, rispetto a animale)
	}
}