Visualizzazione dei risultati da 1 a 10 su 13

Hybrid View

  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    Quote Originariamente inviata da Alex'87 Visualizza il messaggio
    1. Per usare elemento devi avere un'istanza della classe che la contiene (a meno che elemento non sia static)
    2. elemento è public: pessima cosa
    3. Se elemento è String, String(elemento) cosa sarebbe? Un cast? (che comunque è (String) elemento))
    Perchè è una pessima cosa dichiarare elemento public ?
    Non è preferibile se voglio utilizzare elemento al di fuori della classe dove è stato creato ?

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Quote Originariamente inviata da roquentin Visualizza il messaggio
    Perchè è una pessima cosa dichiarare elemento public ?
    Non è preferibile se voglio utilizzare elemento al di fuori della classe dove è stato creato ?
    No. L'accessi ai campi va sempre fatto attraverso gli opportuni metodi (getter e setter). Questo perché in questo modo è possibile controllare l'accesso ai campi ed evitare stati inconsistenti.

    Ti faccio un esempio.
    Abbiamo una classe "Person" che modella una persona. Avrà nome, cognome, età ecc.
    L'età ha un vincolo: deve essere non negativa (ovviamente!)

    Approccio "public":

    codice:
    public class Person {
        public int age;
        ... // altri campi, non ci interessano...
    }
    Potrei ora fare questo:

    Person p = new Person();
    p.age = -100; // non ha senso ma non c'è nulla che me lo impedisce!

    Un ipotetico metodo calcolaPensione(p) mi darebbe risultati sbagliati! BOOM!

    Approccio serio:

    codice:
    public class Person {
        private int age;
        
        public void setAge(int age) {
            if (age < 0) {
                throw new IllegalArgumentException("age must be >= 0!");
            }
            
            this.age = age;
        }
    
        public int getAge() { 
            return age;
        }
    
        ... // altra roba...
    }
    La situazione ora cambia:

    Person p = new Person();
    p.age = -100; // ERRORE DI COMPILAZIONE! age è privato, non posso accederci!

    p.setAge(-100); // ERRORE A RUNTIME: mi stampa sulla console "age must be >= 0!"
    p.setAge(40); // OK!

    int age = p.getAge();
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2014
    Messaggi
    480
    Si capisco benissimo quello che dici, però nel caso una variabile sia "interna" nel senso che la uso per metterci solo determinati valori definiti da me in un menù a tendina, potrebbe anche andare, no?

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 © 2026 vBulletin Solutions, Inc. All rights reserved.