Estuve tratando de aprender sobre clases y objetos durante los últimos días y me di cuenta de que usar "this.set" y "set" dentro de un constructor no supuso ninguna diferencia aparente. Para aclarar
public Movie(String title,String director, String rating) { setTitle(title); setDirector(director); setRating(rating);y
public Movie(String title,String director, String rating) { this.setTitle(title); this.setDirector(director); this.setRating(rating);no hizo ninguna diferencia mientras corría.
¿Cuál es la diferencia, si hay alguna y cuál es mejor práctica?
Esperaba que hubiera algún tipo de error, pero funcionó completamente igual. Además, mi instructor no usa "esto". mientras pone un setter dentro de un constructor en sus ejemplos.
Gracias.
No hay necesidad de usar this al llamar a los métodos setter en su ejemplo (y no es una práctica estándar hacerlo). Sin embargo, es necesario usar this si desea establecer un campo con el mismo nombre como variable en el constructor. Por ejemplo:
public class Movie { private final String title; public Movie(String title) { this.title = title; } } Si no especifica this.title , pensará que está tratando de asignarse la variable de title a sí mismo.
La palabra clave this también es necesaria para distinguir diferentes implementaciones de métodos cuando su clase ha extendido otra clase (por ejemplo, puede llamar a this.method() o super.method() .
Con this.* está llamando al método ubicado en "esta" instancia. Al heredar de una clase que implementó los mismos métodos, también tiene la oportunidad de llamar a super.setTitle().
O con un ejemplo:
class Foo { public int baz() { return -1; } } class Bar extends Foo { private Bar() { super.baz(); // returns -1 this.baz(); // returns 1 } public int baz() { return 1; } }