49 votes

Définir et obtenir des méthodes en java ?

Comment puis-je utiliser les méthodes set et get, et pourquoi devrais-je les utiliser ? Sont-ils vraiment utiles ? Et pouvez-vous également me donner des exemples de méthodes set et get ?

8voto

Stefan Falk Points 1224

Je pense que tu veux quelque chose comme ça :

 public class Person {

  private int age;

  //public method to get the age variable
  public int getAge(){
       return this.age
  }

  //public method to set the age variable
  public void setAge(int age){
       this.age = age;
  }
}

Vous appelez simplement une telle méthode sur une instance d'objet. De telles méthodes sont utiles, surtout si la configuration de quelque chose est censée avoir des effets secondaires. Par exemple si vous souhaitez réagir à certains événements comme :

   public void setAge(int age){

       this.age = age;

       double averageCigarettesPerYear = this.smokedCigarettes * 1.0 / age;

       if(averageCigarettesPerYear >= 7300.0) {
           this.eventBus.fire(new PersonSmokesTooMuchEvent(this));
       }
  }

Bien sûr, cela peut être dangereux si quelqu'un oublie d'appeler setAge(int) là où il le devrait et définit age directement en utilisant this.age .

7voto

g051051 Points 646

Les setters et les getters sont utilisés pour remplacer les variables membres d'accès direct à partir de classes externes. si vous utilisez un setter et un getter pour accéder à une propriété, vous pouvez inclure l'initialisation, la vérification des erreurs, les transformations complexes, etc. Quelques exemples :

 private String x;

public void setX(String newX) {
    if (newX == null) {
        x = "";
    } else {
        x = newX;
    }
}

public String getX() {
    if (x == null) {
        return "";
    } else {
       return x;
    }
}

6voto

Bohemian Points 134107

Avoir des méthodes d'accès est préférable à l'accès direct aux champs, car il contrôle la façon dont les champs sont accessibles (peut imposer la vérification des données, etc.) et s'adapte aux interfaces (les interfaces ne peuvent pas nécessiter la présence de champs, uniquement des méthodes).

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X