bueno saludos he aqui de nuevo ;D y les queria hacer otra pregunta cual es la funcion de el this porque lo que tengo entendido es para evitar ambiguedades pero no estoy muy seguro y con respecto al siguiente codigo que es lo que retornaria
class triangulo {
private double base, altura;
public triangulo datos(double base, double altura) {
This.base = base ;
This.altura = altura ;
return this;
}
public triangulo visualizar( ) {
System.out.println("Base igual: "+base);
System.out.println("Altura igual: "+altura);
return this;
}
}
y lo que no entiendo es que si su funcion es evitar ambiguedades porque cuando escribo
base = base;
altura = altura;
no me da ningun tipo de error y yo pensaba que me iba a dar un error en compilacion y que para poder hacer eso necesitaria usar el operador this pero veo que no y me gustaria que alguien me aclarara la duda gracias
saludos
http://java.sun.com/docs/books/tutorial/java/javaOO/thiskey.html
exactamente lo que entendi se usa para evitar ambiguedades y tambien para invocar los parametros de la funcion pero ahora mi duda es en esta parte del codigo
This.base = base ;
This.altura = altura ;
return this;
que es lo que regresa return this; alli esta principalmente mi duda
this es el objeto en que está el método.
De todas formas, ese código es de lo peor que he visto, entre otras cosas, porque las clases se escriben con mayúsculas y this con minúsculas.
http://www.ccnyddm.com/AdvJava/java_constructor_tutorial.htm
this guarda una referencia de la clase donde es utilizada, en vez de crear un nuevo objeto que instancie la clase se usa "this", tambien utilizado para evitar ambiguedades entre variables.
this.base = base ;
//en vez de eso se puede escribir:
triangulo objeto=new triangulo();
obj.base=base;
//============ y cuando retorna this.
//============ retorna la referencia a la clase
Saludos...
el this hace una referencia al mismo objeto en tu caso ase referencia a Triangulo
xauuuu ;D :xD
Una ambigüedad es cuando tienes declaradas dos variables del mismo nombre y con el mismo hámbito o alcance, es decir tienes:
class MyClass
{
private String x;
private String x;
}
//eso es un ejemplo de ambigüedad
class MyClass
{
private String x;
public String myFuncion(String x)
{
//como igualarias la x global a la clase a la x que solo existe dentro de esta funcion?
x=x;//no se sabria x es cual
this.x=x;//esto seria como si en tu mente dijera MyClass.x=myFuncion.x
}
}
Salu2s....
this.base = base;
this.altura = altura;
checa el código completo y ve:
this.base es la variable base que está al principio de la clase, que pertenece a la clase, y base a secas es el parámetro del método. Las dos variables se llaman igual así que si pones "base = base", ¿cómo sabe el compilador o el programa si te refieres a base del método o base de tu clase?