para que funciona this

Iniciado por darkxxx, 21 Julio 2007, 19:33 PM

0 Miembros y 1 Visitante están viendo este tema.

darkxxx

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

Ragnarok

No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones

darkxxx

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

Ragnarok

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
No olvidéis leer las normas generales, además de las específicas de cada tablón.sgae, ladrones

coolfrog

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.
Código (java) [Seleccionar]
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...


egyware

el this hace una referencia al mismo objeto en tu caso ase referencia a Triangulo
xauuuu ;D :xD

NightZpy

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....

blackhacking.no-ip.org "Con Server para prácticas" - "La incompetencia en masas es inversamente proporcional al sistema social"

NekroByte

Código (java) [Seleccionar]
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?