Java - ¿Porqué funciona ésto?

 
Vista:

¿Porqué funciona ésto?

Publicado por flagg327 (3 intervenciones) el 19/06/2013 23:15:49
Buenas... eh creado éstas tres clases, miren:

1
2
3
4
5
6
7
8
9
10
11
package culo;
 
public class Culo {
 
    public static void main(String[] args) {
        Fecha cagadera = new Fecha(18, 6, 2013);
        Caca bosta = new Caca("marrón", "blandita", cagadera);
 
        System.out.print(bosta + "\n");
    }
}

---------------------------------------------------------------------------------------------------

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package culo;
 
public class Caca {
    private String color;
    private String consistencia;
    private Fecha diaCagadera;
 
    public Caca(String colorDeBosta, String consistenciaDeBosta, Fecha diaDeBosta ) {
        color = colorDeBosta;
        consistencia = consistenciaDeBosta;
        diaCagadera = diaDeBosta;
 
        System.out.print("Datos de la caca: ");
    }
 
    public String toString() {
        return String.format("%s, %s, %s.",color, consistencia, diaCagadera );
    }
 
}

---------------------------------------------------------------------------------------------------

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
package culo;
 
public class Fecha {
    int dia;
    int mes;
    int anio;
 
    public Fecha(int diaDeBosta, int mesDeBosta, int anioDeBosta) {
        dia = diaDeBosta;
        mes = mesDeBosta;
        anio = anioDeBosta;
    }
 
    public String toString() {
        return String.format("%s/%s/%s", dia, mes, anio);
    }
}


---------------------------------------------------------------------------------------------------

Mi duda es: ¿Porqué el método System.out.print(bosta + "\n") hace una llamada a los métodos toString implícitamente de las otras dos clases?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Jhonnathan Emilio Cardona Saineda

¿Porqué funciona ésto?

Publicado por Jhonnathan Emilio Cardona Saineda (328 intervenciones) el 20/06/2013 22:26:18
El metodo toString es heredado de la clase base Object. Cuando creas tu propio toString este reemplaza al que ya viene con cada objeto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

¿Porqué funciona ésto?

Publicado por flagg327 (3 intervenciones) el 22/06/2013 23:37:36
genial... entonces pasándolo en limpio lo que me querés decir es que el método toString es llamado en forma implícita en la línea:

System.out.print(bosta + "\n");

correcto?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jhonnathan Emilio Cardona Saineda

¿Porqué funciona ésto?

Publicado por Jhonnathan Emilio Cardona Saineda (328 intervenciones) el 24/06/2013 16:23:06
Hola,
Si, cuando el objeto es instanciado, con solo mostrar el objeto, la JVM llamará al toString().
Si no tienes el método implementado por ti, automáticamente llamará al toString heredado por java.lang.Object que retorna un texto con el formato.
getClass().getName() + '@' + Integer.toHexString(hashCode())

Mas info
http://docs.oracle.com/javase/6/docs/api/java/lang/Object.html#toString()
Saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

¿Porqué funciona ésto?

Publicado por flagg327 (3 intervenciones) el 27/06/2013 22:06:41
Muchisimas gracias. Completísima tu respuesta.

Saludos.

Flagg327
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar