Un constructor Java crea una nueva instancia de un objeto ya definido. Este artículo analiza cómo usar los métodos constructores de Java para crear un objeto Persona.
Nota: Debe crear dos archivos en la misma carpeta para este ejemplo: Person.java define la clase Persona y PersonExample.java contiene el método principal que crea objetos Persona.
El método del constructor
Let & amp; apos; s comienza creando una clase Persona que tiene cuatro campos privados: nombre, apellido, dirección y nombre de usuario. Estos campos son variables privadas y juntos sus valores constituyen el estado de un objeto. We & amp; apos; también hemos agregado los métodos de constructor más simples:
Video destacado
& lt; pre / & gt; & lt; pre & gt; clase pública Persona {& lt; br & gt ;
& lt; br & gt ;
cadena privada firstName; & lt; br & gt ;
última cadena privada Nombre; & lt; br & gt ;
dirección de cadena privada; & lt; br & gt ;
nombre de usuario privado de la cadena; & lt; br & gt ;
& lt; br & gt ;
// El método constructor & lt; br & gt ;
Persona pública () & lt; br & gt ;
{& lt; br & gt ;
& lt; br & gt ;
} & lt; br & gt ;
} & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & lt; & gt; & gt; & gt; & lt; & gt; & lt; & gt; & gt; & gt; & lt; & gt; & lt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt
El método constructor es similar a cualquier otro método público, excepto que comparte el mismo nombre que la clase y no puede devolver un valor. No puede tener ninguno, uno o muchos parámetros.
Actualmente, nuestro método de constructor no hace nada en absoluto, y es un buen momento para considerar lo que esto significa para el estado inicial del objeto Persona. Si dejamos las cosas como están o lo hicimos & amp;apos;t incluye un método de constructor en nuestra clase Persona (en Java puedes definir una clase sin una) entonces los campos no tendrían valores & amp;# x2014; y ciertamente queremos que nuestra persona tenga un nombre y una dirección, así como otras características.& amp; amp; nbsp; si cree que existe una posibilidad de que su objeto no se use como espera y que los campos no se inicializen cuando se crea el objeto, defínalos siempre con un valor predeterminado: (tixagb_1 )
& lt; pre / & gt; & lt; pre & gt; clase pública Persona {& lt; br & gt ;
& lt; br & gt ;
Cadena privada nombre = & amp; quot; & amp; quot ;; & lt; br & gt ;
Cadena privada lastName = & amp; quot; & amp; quot ;; & lt; br & gt ;
dirección de cadena privada = & amp; quot; & amp; quot ;; & lt; br & gt ;
nombre de usuario de cadena privada = & amp; quot; & amp; quot ;; & lt; br & gt ;
& lt; br & gt ;
// El método constructor & lt; br & gt ;
Persona pública () & lt; br & gt ;
{& lt; br & gt ;
& lt; br & gt ;
} & lt; br & gt ;
} & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & lt; & gt; & gt; & gt; & lt; & gt; & lt; & gt; & gt; & gt; & lt; & gt; & lt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt; & gt
Normalmente, para garantizar que un método de constructor sea útil, lo diseñamos para esperar parámetros. Los valores pasados a través de estos parámetros se pueden usar para establecer los valores de los campos privados:
& lt; pre / & gt; & lt; pre & gt; clase pública Persona {& lt; br & gt ;
& lt; br & gt ;
cadena privada firstName; & lt; br & gt ;
última cadena privada Nombre; & lt; br & gt ;
dirección de cadena privada; & lt; br & gt ;
nombre de usuario privado de la cadena; & lt; br & gt ;
& lt; br & gt ;
// El método constructor & lt; br & gt ;
persona pública (persona de cuerda Nombre, persona de cuerda Apellido, persona de cuerda Dirección, persona de cuerda Nombre de usuario) & lt; br & gt ;
{& lt; br & gt ;
firstName = personFirstName; & lt; br & gt ;
lastName = personLastName; & lt; br & gt ;
dirección = persona Dirección; & lt; br & gt ;
nombre de usuario = person Nombre de usuario; & lt; br & gt ;
} & lt; br & gt ;
& lt; br & gt ;
// Un método para mostrar el estado del objeto en la pantalla & lt; br & gt ;
public void displayPersonDetails () & lt; br & gt ;
{& lt; br & gt ;
System.out.println (& amp; quot; Nombre: & amp; quot; + firstName + & amp; quot; & amp; quot; + lastName); & lt; br & gt ;
System.out.println (& amp; quot; Dirección: & amp; quot; + dirección); & lt; br & gt ;
System.out.println (& amp; quot; Nombre de usuario: & amp; quot; + nombre de usuario); & lt; br & gt ;
} & lt; br & gt ;
} & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; & lt; / br & gt; / br & gt; & br & gt; & br & gt; & gt; & lt; / br & gt; & gt;
Nuestro método constructor ahora espera que se le pasen los valores de cuatro cadenas. Luego se usan para establecer el estado inicial del objeto. We & amp; apos; también hemos agregado un nuevo método llamado displayPersonDetails () para permitirnos ver el estado del objeto después de que se haya creado.
Llamando al método del constructor
A diferencia de otros métodos de un objeto, el método constructor debe llamarse usando & amp; quot; new & amp; quot; palabra clave:
& lt; pre / & gt; & lt; pre & gt; clase pública PersonExample {& lt; br & gt ;
& lt; br & gt ;
public static void main (String [] args) {& lt; br & gt ;
& lt; br & gt ;
Person dave = nueva Person (& amp; quot; Dave & amp; quot;, & amp; quot; Davidson & amp; quot ;, & amp; quot; 12 Main St.& amp; quot ;, & amp; quot; DDAvidson & amp; quot;); & lt; br & gt ;
dave.displayPersonDetails (); & lt; br & gt ;
& lt; br & gt ;
} & lt; br & gt ;
} & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; & lt; / pre & gt;
Aquí y amp; apos; s lo que hicimos:
- Para crear la nueva instancia del objeto Persona, primero definimos una variable de tipo Persona que sostendrá el objeto. En este ejemplo, nosotros & amp; apos; lo hemos llamado dave .
- En el otro lado del signo igual, llamamos al método constructor de nuestra clase Persona y le pasamos cuatro valores de cadena. Nuestro método constructor tomará esos cuatro valores y establecerá el estado inicial del objeto Persona como: firstName = & amp; quot; Dave & amp; quot ;, lastName = & amp; quot; Davidson & amp; quot ;, dirección = & amp; quot; 12 Main St & amp; quot; & amp; ddavids.
Observe cómo nosotros & amp; apos; hemos cambiado a la clase principal de Java para llamar al objeto Persona. Cuando trabaja con objetos, los programas abarcarán múltiples archivos .java. Asegúrese de guardarlos en la misma carpeta. Para compilar y ejecutar el programa, simplemente compile y ejecute el archivo de clase principal de Java (es decir,., PersonExample.java ). El compilador Java es lo suficientemente inteligente como para darse cuenta de que también desea compilar el archivo Person.java porque puede ver que lo ha usado en la clase PersonExample.
Nombramiento de parámetros
El compilador Java se confunde si los parámetros del método constructor tienen los mismos nombres que los campos privados. En este ejemplo, puede ver que hemos distinguido entre ellos al prefijar los parámetros con la palabra & amp; quot; person.& amp; quot; Vale la pena mencionar que es otra forma. Podemos usar & amp; quot; this & amp; quot; palabra clave en su lugar:
& lt; pre / & gt; & lt; pre & gt; // El método constructor & lt; br & gt ;
Persona pública (nombre de cadena, apellido de cadena, dirección de cadena, nombre de usuario de cadena) & lt; br & gt ;
{& lt; br & gt ;
this.firstName = firstName; & lt; br & gt ;
this.lastName = lastName; & lt; br & gt ;
this.address = direction; & lt; br & gt ;
this.username = nombre de usuario; & lt; br & gt ;
& lt; br & gt ;
} & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; & lt; / pre & gt;
The & amp; quot; this & amp; quot; la palabra clave le dice al compilador Java que la variable a la que se le asignará el valor es la definida por la clase, no el parámetro. Es una cuestión de estilo de programación, pero este método nos ayuda a definir parámetros de constructores sin tener que usar múltiples nombres.
Más de un método de constructor
Al diseñar sus clases de objetos, no se limita a usar solo un método de constructor. Puede decidir que hay un par de formas en que un objeto puede inicializarse. La única restricción al usar más de un método de constructor es que los parámetros deben diferir.
Imagine que en el momento en que creamos el objeto Persona, podríamos no conocer el nombre de usuario. Let & amp; apos; s agrega un nuevo método de constructor que establece el estado del objeto Persona usando solo el nombre, apellido y dirección:
& lt; pre / & gt; & lt; pre & gt; clase pública Persona {& lt; br & gt ;
& lt; br & gt ;
cadena privada firstName; & lt; br & gt ;
última cadena privada Nombre; & lt; br & gt ;
dirección de cadena privada; & lt; br & gt ;
nombre de usuario privado de la cadena; & lt; br & gt ;
& lt; br & gt ;
// El método constructor & lt; br & gt ;
Persona pública (nombre de cadena, apellido de cadena, dirección de cadena, nombre de usuario de cadena) & lt; br & gt ;
{& lt; br & gt ;
this.firstName = firstName; & lt; br & gt ;
this.lastName = lastName; & lt; br & gt ;
this.address = direction; & lt; br & gt ;
this.username = nombre de usuario; & lt; br & gt ;
} & lt; br & gt ;
& lt; br & gt ;
// El nuevo método constructor & lt; br & gt ;
Persona pública (nombre de cadena, apellido de cadena, dirección de cadena) & lt; br & gt ;
{& lt; br & gt ;
this.firstName = firstName; & lt; br & gt ;
this.lastName = lastName; & lt; br & gt ;
this.address = direction; & lt; br & gt ;
this.username = & amp; quot; & amp; quot ;; & lt; br & gt ;
} & lt; br & gt ;
& lt; br & gt ;
// Un método para mostrar el estado del objeto en la pantalla & lt; br & gt ;
public void displayPersonDetails () & lt; br & gt ;
{& lt; br & gt ;
System.out.println (& amp; quot; Nombre: & amp; quot; + firstName + & amp; quot; & amp; quot; + lastName); & lt; br & gt ;
System.out.println (& amp; quot; Dirección: & amp; quot; + dirección); & lt; br & gt ;
System.out.println (& amp; quot; Nombre de usuario: & amp; quot; + nombre de usuario); & lt; br & gt ;
} & lt; br & gt ;
& lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; & gt; & lt; / br & gt; & gt; & br & gt; & gt; & gt; & gt; & gt; & gt; & gt;
Tenga en cuenta que el segundo método de constructor también se llama & amp; quot; Person & amp; quot; y tampoco devuelve un valor. La única diferencia entre este y el primer método de constructor son los parámetros & amp; # x2013; esta vez solo espera tres valores de cadena : firstName, lastName y direction.
Ahora podemos crear objetos Persona de dos maneras diferentes:
& lt; pre / & gt; & lt; pre & gt; clase pública PersonExample {& lt; br & gt ;
& lt; br & gt ;
público estático vacío principal (String [] args) {& lt; br & gt ;
& lt; br & gt ;
Person dave = nueva Person (& amp; quot; Dave & amp; quot;, & amp; quot; Davidson & amp; quot ;, & amp; quot; 12 Main St.& amp; quot ;, & amp; quot; DDAvidson & amp; quot;); & lt; br & gt ;
Person jim = nueva Person (& amp; quot; Jim & amp; quot;, & amp; quot; Davidson & amp; quot ;, & amp; quot; 15 Kings Road & amp; quot;); & lt; br & gt ;
dave.displayPersonDetails (); & lt; br & gt ;
jim.displayPersonDetails (); & lt; br & gt ;
} & lt; br & gt ;
& lt; br & gt ;
} & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt; / br & gt; & lt;
Persona dave se creará con un nombre de pila, apellido, dirección y nombre de usuario. Persona jim, sin embargo, no recibirá un nombre de usuario, es decir. el nombre de usuario será la cadena vacía: nombre de usuario = & amp; quot; & amp; quot ;.
Un resumen rápido
Los métodos de constructor se llaman solo cuando se crea una nueva instancia de un objeto. Ellos:
- Debe tener el mismo nombre que la clase
- No devuelva un valor
- No puede tener ninguno, uno o muchos parámetros
- Puede numerar más de uno siempre que cada método de constructor tenga un conjunto diferente de parámetros
- Puede tener nombres de parámetros iguales a los campos privados siempre que & amp; quot; this & amp; quot; se usa la palabra clave
- Se llaman usando & amp; quot; new & amp; quot; palabra clave
& amp; # x203A; Informática}