Autor Tema: Sobrecarga de metodos en Java. Explicación de conceptos. Significado de this  (Leído 3464 veces)

MrClassic

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 37
    • Ver Perfil
Cordial saludo,

revisando los temas posteriores a mi ultima entrega, he decidido retomar para interiorizar muchos conceptos y entender mejor dichos temas.
por lo que estare formulando preguntas que me aclaren dudas y me ayuden a interiorizar como dije conceptos que se, son de gran importancia para mi verdadero aprendizaje a futuro.

¿por que si creo un constructor de la forma...?
Código: [Seleccionar]
public class Estudiante{
    //Propiedades
    private String nombre;
    private int edad;
    private String direccion;
    private String telefono;
   
    //Constructor 1
    public Estudiante(){
        this("",0,"","");
    }
}

...debo crear otro de la forma...
Código: [Seleccionar]
public Estudiante(String valorNombre, int valorEdad, String valorDireccion, String valorTelefono){
        nombre = valorNombre;
        edad = valorEdad;
        direccion = valorDireccion;
        telefono = valorTelefono;
    }
...Es decir con parametros para que la compilación no me genere error?
si la logica me dicta que me diante this(), estoy diciendo que me refiero a "esta clase", en la cual ya se declararon variables y se inicializan en los parametros dentro del metodo(no se si es un metodo) this("",0"",""). la verdad me falta una explicación que pueda asimilar mejor, ya que esta inicialización de variables se me hace muy similar a esta...

Código: [Seleccionar]

public Estudiante(){
nombre = "";
edad = 0;
direccion = "";
telefono = "";
}

... la cual no genera errores si se compila sola.

"ejemplo del codigo completo funcional sin errores de compilación..."

Código: [Seleccionar]
package Matricula;

public class Estudiante{
    //Propiedades
    private String nombre;
    private int edad;
    private String direccion;
    private String telefono;
   
    //Constructor 1
    public Estudiante(){
        this("",0,"","");
       /* nombre = "";
        edad = 0;
        direccion = "";
        telefono = "";*/
    }
    //Constructor 2
    public Estudiante(String valorNombre, int valorEdad, String valorDireccion, String valorTelefono){
        nombre = valorNombre;
        edad = valorEdad;
        direccion = valorDireccion;
        telefono = valorTelefono;
    }
}

de antemano Gracias.
« Última modificación: 14 de Febrero 2015, 16:23 por Alex Rodríguez »
Quedo en espera de sus recomendaciones y/o correcciones.

Gracias.

toni_apr

  • Avanzado
  • ****
  • Mensajes: 497
  • Curiosidad, es uno de los pilares del Conocimiento
    • Ver Perfil
Re:Sobrecarga de metodos.
« Respuesta #1 en: 13 de Febrero 2015, 19:42 »
Hola MrClassic

La palabra 'this', es una palabra reservada en Java.
Su propósito es referirse a la propia clase, la clase en que se está escribiendo el código.

La linea
this
sin nada más, no tiene ningún significado.

Esta instrucción:
    this ("",0,"","");
en la clase Estudiante es lo mismo que:
Estudiante("",0,"","");
Que es invocar al constructor de la clase con 4 parámetros de tipo String, int, String y String (en ese orden)
Aunque esta instrucción (Estudiante("",0,"","");) dará error.
Así, la única manera de llamar a un constructor específico dentro de la propia clase es usando la palabra reservada 'this'

Si estuvieramos en la clase Profesor
    this ("",0,"","");
sería lo mismo que:
    Profesor("",0,"","");

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

Tu constructor 1:
    public Estudiante(){
        this("",0,"","");
    }


Para Java quiere decir: Ejecuta el constructor que tiene estos 4 parámetros. Es decir el constructor que no tiene parámetros lo que hace es llamar al de cuatro parámetros y se los aporta dentro de los paréntesis.

Resumiendo. Si tu clase solo tiene el primer constructor (sin parámetros), y en su código llama a un constructor de 4 parámetros que no se ha escrito, es normal que de error de compilación, lo mismo que si llamas al método dimeLaHora() si no lo creaste en esta clase.

Resumen final:
Primer caso.
El constructor sin parámetros para la clase Estudiante es:
    public Estudiante(){
        nombre = "";
        edad = 0;
        direccion = "";
        telefono = "";
    }

cuando en la clase no hay más constructores.

Segundo caso.
Si en la clase existe el siguiente constructor con parámetros:

    public Estudiante(String valorNombre, int valorEdad, String valorDireccion, String valorTelefono){
        nombre = valorNombre;
        edad = valorEdad;
        direccion = valorDireccion;
        telefono = valorTelefono;
    }


Y en nuestra clase decidimos que también tenga constructor sin parámetros, éste puede ser así:

    public Estudiante(){
        nombre = "";
        edad = 0;
        direccion = "";
        telefono = "";
    }


O así:

    public Estudiante(){
        this("",0,"","");
    }


Espero haber solventado algunas de tus dudas.

Saludos

MrClassic

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 37
    • Ver Perfil
Cordial Saludo,

He recibido la información y te agradezco por tus aclaraciónes, son muy claras y precisas.


Slds.
Quedo en espera de sus recomendaciones y/o correcciones.

Gracias.

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".