Menu
Coddy logo textTech

Panoramica dei livelli di accesso

Fa parte della sezione Programmazione orientata agli oggetti del percorso Java di Coddy. Lezione 10 di 87.

I modificatori di accesso controllano da dove è possibile accedere ai campi e ai metodi. Java ha quattro livelli di controllo dell'accesso.

ModificatoreStessa classeStesso pacchettoSottoclasseOvunque
privateSìNoNoNo
predefinito (nessuna parola chiave)SìSìNoNo
protectedSìSìSìNo
publicSìSìSìSì
public class BankAccount {
    private double balance;      // Solo questa classe
    String accountType;          // Predefinito: solo nello stesso package
    protected String owner;      // Stesso package + sottoclassi
    public String bankName;      // Accessibile ovunque
}

private è il più restrittivo: usalo per i dati interni a cui non si dovrebbe mai accedere direttamente. public è il più aperto: usalo per i metodi che altre classi devono poter chiamare.

Quando non specifichi alcun modificatore, Java utilizza l’accesso default (detto anche package-private). Questo consente l’accesso solo all’interno dello stesso package.

class Helper {           // Classe con accesso predefinito
    void assist() { }    // Metodo con accesso predefinito
}

Scegli il livello di accesso più restrittivo che consenta comunque al tuo codice di funzionare. Questo protegge i tuoi dati e rende il tuo codice più facile da mantenere.

challenge icon

Sfida

Facile

Creiamo un sistema di record Student che mostra come i modificatori di accesso controllano la visibilità tra file diversi.

Creerai due file per organizzare il codice:

  • Student.java: definisci una classe Student con campi che usano diversi livelli di accesso:
    • campo private: studentId (String) - accessibile solo all'interno della classe Student
    • campo predefinito (senza modificatore): grade (int) - accessibile all'interno dello stesso package
    • campo protected: name (String) - accessibile nello stesso package e nelle sottoclassi
    • campo public: school (String) - accessibile ovunque
    Includi un costruttore che imposta tutti e quattro i campi e un metodo public chiamato getInfo() che restituisce una stringa nel formato: "[studentId] name - Grade grade at school"
  • Main.java: crea un oggetto Student e mostra quali campi possono essere accessibili direttamente dall'esterno della classe. Stampa direttamente il campo school, quindi stampa il risultato di getInfo() per mostrare tutte le informazioni dello studente.

Riceverai quattro input: studentId, name, grade e school (in quest'ordine).

L'output deve essere composto da due righe: il nome della scuola a cui si accede direttamente, seguito dalle informazioni complete dello studente restituite dal metodo getInfo().

Provalo tu

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        
        // Leggi i dati di input
        String studentId = scanner.nextLine();
        String name = scanner.nextLine();
        int grade = Integer.parseInt(scanner.nextLine());
        String school = scanner.nextLine();
        
        // TODO: Crea un oggetto Student con i valori di input
        
        
        // TODO: Stampa direttamente il campo school (accessibile perché è public)
        
        
        // TODO: Stampa il risultato di getInfo() per mostrare tutte le informazioni dello studente
        
    }
}
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Programmazione orientata agli oggetti

Esercitati da solo: Compilatore Java online