Méthodes accesseur en Java

J'ai donc une question sur "setter" et les méthodes "getter" et l'utilité dont ils sont ou ne sont pas.

Disons que je viens d'écrire une programme de base comme suit:

    public class Account
    {
     String name;
     String address;
     double balance; 
    }

Alors, disons que j'écris une autre classe qui utilise ce "Compte" de la classe, comme suit:

    class UseAccount
    {
        public static void main(String[] args)
        {
            Account myAccount = new Account();
            Account yourAccount = new Account();

            myAccount.name = "Blah blah"
        }        
    }

etc., etc.

Quand j'écris myAccount.name = "Blah blah", je suis l'évolution de la valeur de la variable "nom" dans le "Compte" de la classe. Je suis libre de le faire autant de fois que j'aime avec le code écrit de la façon dont il est. Il est venu à mon attention, cependant, qu'il est préférable de faire les variables dans le "Compte" class privé, et ensuite utiliser un "setter" et les méthodes "getter". Donc, si j'ai écrit ce qui suit:

    public class Account
    {
       private String name;
       private String address;
       private String balance;

       public void setName(String n)
       {
          name = n;
       }

       public String getName()
       {
          return name;
       }
    }

Je peux toujours modifier la valeur de la variable "nom" par la simple création d'une autre classe qui a quelque chose comme:

    class UseAccount
    {
       public static void main(String[] args)
       {
          Account myAccount = new Account();

          myAccount.setName("Blah blah");
       }
    }

Je ne comprends pas comment à l'aide de cette méthode est toute différente, ou est censé empêcher les gens formulaire de modification de la valeur d'un champ privé. Toute aide?

À l'aide de "getter" et "setter" méthodes, vous assurez-vous que vos variables sont définis uniquement dans un vous décider. Cela peut sembler idiot et inutile dans les petites, "jouet" des programmes: mais il peut être une bouée de sauvetage dans les grands programmes complexes. AUSSI: à l'aide de "recevoir" et "setter" méthodes arrive à être la façon dont Java beans travail.

OriginalL'auteur Ryan Christman | 2012-07-16