El constructor new en Java

El constructor ‘new’ en Java es un método especial utilizado para crear nuevas instancias de una clase. Es decir, para crear objetos. En el capítulo anterior, lo usamos para crear objetos, pero sin emplear argumentos. En esta ocasión, te voy a mostrar como dar unos valores iniciales a los objetos en su instanciación.

Al utilizar el constructor new, podemos proporcionar argumentos que serán utilizados para inicializar los campos o atributos de la clase. De esta manera, podemos evitar tener que asignar valores a cada campo individualmente después de crear el objeto. Así, no repetimos tanto código.

Por ejemplo, si queremos crear dos objetos de la clase Usuario con valores iniciales, podemos hacerlo de la siguiente manera:

Usuario usuario1 = new Usuario("Juan", "Pérez García", 32, "Av. del Pacífico, 23", "+34-91-000-0000");
Usuario usuario2 = new Usuario("María", "Rodríguez Martínez", 28, "C/ del Sol, 5", "+34-91-000-0000");

En este ejemplo, estamos utilizando el constructor new de la clase Usuario para crear dos objetos y proporcionar valores iniciales para cada uno de ellos. Estos valores se asignan a los atributos nombre, apellidos, edad, direccion y telefono de cada objeto, respectivamente.

Para poder utilizar el constructor new de esta forma, debemos proporcionar un método constructor en la clase Usuario.

¿Qué es un método constructor en Java?

Un método constructor es un método que tiene el mismo nombre que la clase y se utiliza para inicializar los atributos de la clase al crear una nueva instancia, es decir, asigna valores a todos los atributos del objeto que incluyamos en este método constructor. El método constructor puede tener argumentos para recibir los valores iniciales de los atributos de la clase.

Para quienes habéis estudiado Python, este método, podríamos decir, que es como el método __init__.

Por ejemplo, en la clase Usuario podemos incluir el siguiente método constructor:

public Usuario(String nombre, String apellidos, int edad, String direccion, String telefono) {
    this.nombre = nombre;
    this.apellidos = apellidos;
    this.edad = edad;
    this.direccion = direccion;
    this.telefono = telefono;
}

En este método constructor, estamos usando la palabra clave this para hacer referencia a los atributos de la clase. Por ejemplo, this.nombre hace referencia al campo nombre de la clase Usuario, y this.apellidos hace referencia al campo apellidos de la clase. Los argumentos del método constructor, nombre, apellidos, edad, direccion y telefono, se utilizan para asignar valores a estos atributos.

Una vez que hemos incluido el método constructor en la clase Usuario, podemos utilizar el constructor new para crear objetos de la clase y proporcionar valores iniciales para cada uno de ellos. Por ejemplo, estos:

Usuario usuario1 = new Usuario("Juan", "Pérez García", 32, "Av. del Pacífico, 23", "+34-91-000-0000");
Usuario usuario2 = new Usuario("María", "Rodríguez Martínez", 28, "C/ del Sol, 5", "+34-91-000-0000");

Con esto, le estoy dando valores iniciales a los dos objetos.

En el capítulo anterior, sin utilizar las capacidades de este método, tuvimos que hacer esto que ocupa dos líneas, todas estas:


        //Asignación de valores de usuario1
        usuario1.nombre = "Juan";
        usuario1.apellidos = "Pérez García";
        usuario1.edad = 32;
        usuario1.direccion = "Av. del Pacífico, 23";
        usuario1.telefono = "+34-91-000-0000";

        //Asignación de valores de usuario2
        usuario2.nombre = "María";
        usuario2.apellidos = "Rodríguez Martínez";
        usuario2.edad = 28;
        usuario2.direccion = "C/ del Sol, 5";
        usuario2.telefono = "+34-91-000-0000";

¿Qué son los parámetros y argumentos?

Antes de continuar, debo explicar lo que son los parámetros y argumentos.

Los parámetros son las variables declaradas en la definición de un método o constructor. Por ejemplo, en el constructor Usuario que hemos visto anteriormente tenemos los parámetros String nombre, String apellidos, int edad, String direccion y String telefono. Estas variables se usan para recibir valores de los argumentos que se pasan al constructor al instanciar un objeto de la clase.

public Usuario(String nombre, String apellidos, int edad, String direccion, String telefono) {
    this.nombre = nombre;
    this.apellidos = apellidos;
    this.edad = edad;
    this.direccion = direccion;
    this.telefono = telefono;
}

Los argumentos son los valores que se pasan al método o constructor cuando se llama. Por ejemplo, cuando instanciamos el objeto usuario1 de la clase Usuario, estamos pasando los siguientes argumentos al constructor: «Juan», «Pérez García», 32, «Av. del Pacífico, 23», «+34-91-000-0000». Estos argumentos se asignan a los parámetros del constructor, nombre, apellidos, edad, direccion y telefono, respectivamente, y se utilizan para inicializar los atributos del objeto.

En resumen, los parámetros son las variables declaradas en la definición de un método o constructor, mientras que los argumentos son los valores que se pasan al método o constructor al llamarlo.

¿Qué es this de Java?

La palabra clave this se usa en Java para hacer referencia a la instancia actual de una clase (objeto de una clase). Se emplea a menudo dentro de métodos o constructores de clase para hacer referencia a los atributos o métodos de la clase.

Por ejemplo, en el constructor Usuario que hemos visto anteriormente:

public Usuario(String nombre, String apellidos, int edad, String direccion, String telefono) {
    this.nombre = nombre;
    this.apellidos = apellidos;
    this.edad = edad;
    this.direccion = direccion;
    this.telefono = telefono;
}

Estamos utilizando this para hacer referencia a los atributos nombre, apellidos, edad, direccion y telefono de la clase Usuario. Por ejemplo, this.nombre hace referencia al atributo nombre de la clase, y this.apellidos hace referencia al atributo apellidos de la clase.

Al utilizar this, estamos asignando los valores de los argumentos del constructor a los campos de la clase. Por ejemplo, cuando instanciamos el objeto usuario1 de la clase Usuario, estamos asignando el valor «Juan» al campo nombre del objeto, el valor «Pérez García» al campo apellidos, y así sucesivamente.

En resumen, this se utiliza para hacer referencia a la instancia actual de una clase y se utiliza a menudo para acceder a los campos o métodos de la clase.

Te dejo el código completo y el resultado para que veas mejor donde se coloca cada cosa:


class Usuario {
    //Atributos
    String nombre;
    String apellidos;
    int edad;
    String direccion;
    String telefono;

    // constructor de la clase
    public Usuario(String nombre, String apellidos, int edad, String direccion, String telefono) {
        this.nombre = nombre;
        this.apellidos = apellidos;
        this.edad = edad;
        this.direccion = direccion;
        this.telefono = telefono;
    }

    //Método para mostrar la información del objeto
    public void mostrarDatos() {
        System.out.println("Nombre: " + nombre);
        System.out.println("Apellidos: " + apellidos);
        System.out.println("Edad: " + edad);
        System.out.println("Dirección: " + direccion);
        System.out.println("Teléfono: " + telefono);
    }
}

public class Main {
    public static void main(String[] args) {
        //Instancias de Usuario
        Usuario usuario1 = new Usuario("Juan", "Pérez García", 32, "Av. del Pacífico, 23", "+34-91-000-0000");
        Usuario usuario2 = new Usuario("María", "Rodríguez Martínez", 28, "C/ del Sol, 5", "+34-91-000-0000");

        //Llamada al método de información del objeto
        usuario1.mostrarDatos();
        usuario2.mostrarDatos();
    }
}

El resultado en la consola aparece de las llamadas al método mostrarDatos().

Resultado en la consola

Nombre: Juan
Apellidos: Pérez García
Edad: 32
Dirección: Av. del Pacífico, 23
Teléfono: +34-91-000-0000
Nombre: María
Apellidos: Rodríguez Martínez
Edad: 28
Dirección: C/ del Sol, 5
Teléfono: +34-91-000-0000
Process finished with exit code 0

Dejamos el capítulo aquí. En el siguiente, continuamos con más cosas sobre la programación orientada a objetos con Java.

Todo el temario del curso Java aquí.


Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Trending