Visualizzazione dei risultati da 1 a 2 su 2
  1. #1

    [Java] Richiamare attributi

    Mi servirebbe un chiarimento su come richiamare gli attributi di una classe istanziabile e non.
    Quand'è che, ad esempio, posso richiamare un attributo con la dicitura classe.nomeAttributo e quando invece è meglio che faccia all'interno della classe un metodo get che mi ritorna l'attributo?

    Il metodo con cui richiamare gli attributi varia a seconda che un attributo sia static/non static? Oppure private/public ecc.? Se sì mi potreste esporre le varie casistiche?Sono un po' in confusione :S

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: [Java] Richiamare attributi

    Originariamente inviato da Ghiozzo
    Quand'è che, ad esempio, posso richiamare un attributo con la dicitura classe.nomeAttributo e quando invece è meglio che faccia all'interno della classe un metodo get che mi ritorna l'attributo?

    Il metodo con cui richiamare gli attributi varia a seconda che un attributo sia static/non static? Oppure private/public ecc.?
    static/non-static cambia solo la appartenenza del campo (alla classe o all'oggetto) e di conseguenza cambia anche la "durata" e l'ambito di visibilità del campo.

    Per l'accessibilità cioè il fatto di poter davvero accedere al campo dipende innanzitutto dal livello di accesso della classe e poi dal livello di accesso del campo (o in generale un membro).
    Il livello di accesso è uno dei 4 possibili: public, protected, "default", private.

    Una classe public con un campo public vuol dire che il campo è accessibile direttamente e da qualunque altra classe con NomeClasse.campo (se static) o unOggetto.campo (se non-static).
    Generalmente non è quasi mai una buona idea fare così. L'unico caso in cui sarebbe forse sensato fare così è se la classe fosse package-level (solo accessibile nel package) oppure se fosse una nested/inner class private di una classe. In queste circostanze l'accesso e l'uso della classe è perlomeno circoscritto e "controllato". Motivo per cui se la classe serve solo a raggruppare dei campi e soddisfa tale necessità, non c'è nulla di inerentemente sbagliato nel mettere i campi public, tanto si sa bene dove/come sono usati.

    Se la classe è public, meglio sempre mettere i metodi setter/getter public per i campi e tenere il campo private.
    Altri scenari come ad esempio mettere campi protected o package-level, dipende dal "design" che si intende realizzare ma bisognerebbe vedere caso per caso, non si può generalizzare!
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.