Je faisais un projet dans un livre Java et suis tombé sur cet exemple de code. L'auteur du livre a dit qu'au lieu d'initialiser directement X et Y dans mon constructeur, je pouvais appeler la méthode setLocation() de la classe à la place. Malheureusement, je n'ai plus le livre pour une explication concrète sur la raison pour laquelle c'est mieux. Je ne suis pas trop expérimenté avec Java mais n'est-il pas juste ... plus simple d'attribuer des valeurs directement et ne pas s'inquiéter d'un autre appel de fonction?Pourquoi appeler une méthode pour mieux définir les variables que de les définir normalement dans le constructeur?
//Point constructor, normal way of initializing variables
private double x;
private double y;
Point(double initial_x, double initial_y)
{
this.x = initial_x;
this.y = initial_y;
}
//Point constructor, the other way
Point(double initial_x, double initial_y)
{
setLocation(initial_x, initial_y);
}
public void setLocation(double newX, double newY)
{
this.x = newX;
this.y = newY;
}
Il est utile de savoir pourquoi @Adam est correct et que cette précaution est applicable à la fois pour C++ et Java/.Net: http://www.artima.com/forums/flat.jsp?forum=226&thread=113723 – rwong
Ok, donc si une classe qui étend Point est créée et remplace setLocation() comment est-ce mauvais? Si la nouvelle classe appelle le constructeur de Point, Point n'appelle-t-il pas à son tour son propre setLocation() et évite-t-il tout mauvais comportement? – SDevil
Je suis d'accord mais question :) Et si la logique au-delà de SetLocation faisait plus que simplement définir les propriétés ET devait se produire à chaque fois que l'objet a été créé? –