java constructor class
Este tutorial discutirá Java Constructor, sus tipos y conceptos como la sobrecarga de constructores y el encadenamiento de constructores con ejemplos de código:
De nuestros tutoriales anteriores, sabemos que la instancia de una clase se llama objeto. Un objeto de una clase se crea utilizando la palabra clave 'nueva'. Se llama a un método especial llamado 'constructor' cuando creamos un objeto con una nueva palabra clave o cuando se crea una instancia del objeto.
Un constructor se define como un bloque de código para inicializar el objeto de clase. Es idéntico al método pero no es un método. Sin embargo, se puede denominar como un 'método especial' en Java.
=> Consulte aquí para ver los tutoriales de formación de A-Z de Java aquí.
Lo que vas a aprender:
- Java Constructor
- Conclusión
Java Constructor
El constructor de Java se utiliza para inicializar el objeto recién creado. Un objeto debe tener algunos datos antes de que se utilice en el programa. Por lo tanto, usamos el constructor para poder asignar algunos datos iniciales al objeto.
Como ejemplo simple, considere una clase ABC para la que necesitamos crear un objeto. Creemos un objeto 'myObj' para la clase ABC con una nueva palabra clave.
|_+_|La declaración anterior crea un objeto myObj. Cuando se crea este objeto, se llama a un constructor para la clase ABC sin argumento (ABC () indica que no hay argumentos para el constructor). Como no se proporcionan argumentos para el constructor anterior, los campos miembros de myObj se inicializarán a sus valores iniciales predeterminados.
Por ejemplo,
- Los tipos de datos numéricos como int se establecen en 0.
- El valor de la variable del tipo de datos Char se establece en un carácter nulo (' 0').
- Las referencias se establecen en nulas.
En este tutorial, discutiremos los constructores en detalle junto con los diversos constructores usados en Java.
Cómo crear un constructor en Java
Para crear un constructor en Java, debemos seguir ciertas reglas como se indica a continuación.
- El constructor de la clase tiene el mismo nombre que el de la clase.
- No puede haber un constructor que sea final, abstracto, sincronizado o estático. Esto se debe a que los actos finales como una constante, abstracta no pueden ejemplificarse. Mientras sincronizado se usa en el caso de subprocesos múltiples, y la palabra clave estática se usa a nivel de clase.
- Podemos usar modificadores de acceso con los constructores.
- Un constructor no puede tener un tipo de retorno.
Por ejemplo,definamos una clase Student de la siguiente manera:
|_+_|Podemos crear objetos de la clase anterior usando la nueva palabra clave. Mientras se crea el objeto, podemos inicializar las variables de dos miembros de esta clase proporcionando un constructor. Tenga en cuenta que incluso si no proporcionamos un constructor y simplemente ejecutamos la siguiente declaración,
Estudiante estudiante = nuevo Estudiante ();
Aún así, Java ejecutará un constructor predeterminado que inicializará las variables de dos miembros a sus valores predeterminados del sistema. Ahora, si queremos que el valor inicial de Student.name sea “Keith” y roll_no sea 27, entonces para hacer esto podemos crear el siguiente método constructor.
|_+_|Cuando creamos un objeto de la clase del estudiante con la siguiente declaración
|_+_|Entonces, los valores iniciales de las variables miembro name y roll_no serán Keith y 27 respectivamente.
Ahora que se crea un constructor, ¿cuándo se llamará?
Se llama a un constructor cada vez que se crea un objeto con la palabra clave new como en el caso anterior. Como ya se mencionó, si no se proporciona un constructor, Java proporciona un constructor predeterminado que se llama cuando se crea el objeto con la palabra clave new.
Ejemplo de constructor
El siguiente programa muestra un ejemplo de constructor en el que tenemos un constructor simple sin argumentos. Este constructor simplemente asigna valores iniciales a sus variables miembro.
|_+_|Producción:
Constructor predeterminado en Java
El constructor predeterminado también se denomina Constructor vacío. . Este constructor es insertado por el compilador de Java en el código de la clase donde no hay ningún constructor implementado por el programador. El constructor predeterminado se inserta durante la compilación y, por lo tanto, aparecerá solo en el archivo '.class' y no en el código fuente.
Considere la siguiente clase de Java.
archivo de origen (.java) archivo de clase (.class)
En la figura anterior, la primera figura muestra el código fuente en el que no hemos especificado ningún constructor. Entonces, cuando compilamos este código y se genera el archivo .class, podemos ver que el compilador de Java ha insertado un constructor predeterminado como se muestra en la figura adjunta (en color azul).
Nota:
A veces, se utiliza un constructor predeterminado para describir un constructor sin argumentos en Java. Pero estos dos términos son diferentes en realidad. El constructor sin argumentos es un tipo de constructor en Java especificado por el programador. El constructor predeterminado es el constructor que inserta el compilador de Java.
mejor descargador de mp3 de música para android
Por lo tanto, aunque la mayoría de los programadores usan estos dos términos indistintamente, es aconsejable no confundirlos.
Cuando Java inserta un constructor predeterminado, si el programa tiene alguna variable, se le asignan los valores predeterminados.
La siguiente tabla muestra los valores predeterminados de cada tipo de datos.
Escribe | Valor por defecto |
---|---|
carbonizarse | u0000 |
Objeto | Referencia nula |
booleano | falso |
byte | 0 |
pequeño | 0 |
En t | 0 |
largo | 0L |
flotador | 0.0f |
doble | 0.0d |
El siguiente programa da un ejemplo de un constructor predeterminado en Java.
|_+_|Producción:
Tipos de constructores en Java
Hay dos tipos de constructores en Java como se muestra a continuación.
#1) No-arg Constructor
Un constructor sin argumentos se denomina constructor sin argumentos o sin argumentos. Si no tenemos un constructor sin argumentos, entonces el compilador de Java no crea un constructor predeterminado para la clase.
En general, si definimos un constructor en nuestra clase, el compilador de Java no inserta el constructor predeterminado.
A continuación se muestra un ejemplo del constructor No-arg
|_+_|Producción:
En este programa, proporcionamos un constructor sin argumentos. Aquí, imprimimos algunos mensajes que incluyen las variables miembro. Podemos ver en la salida que los mensajes del constructor se muestran indicando que se ejecuta el constructor no-args.
# 2) Constructor parametrizado
Un constructor parametrizado tiene uno o más parámetros. Podemos usar un constructor parametrizado en caso de que necesitemos pasar algunos valores iniciales a la variable miembro de la clase.
|_+_|Producción:
Aquí hemos proporcionado un constructor parametrizado que toma dos argumentos, es decir, nombre e id.
Dentro del cuerpo del constructor, los argumentos se asignan como valores al nombre y la identificación de las variables miembro, respectivamente.
Luego, en el método principal, cuando creamos un nuevo objeto usando la nueva palabra clave, pasamos dos valores al nombre de la clase después de una nueva palabra clave. Esto indica que estamos llamando al constructor parametrizado. Cuando mostramos las variables miembro, podemos ver que tienen los valores que pasamos al crear el objeto.
Constructores sobrecargados en Java
Ahora surge la pregunta de si una clase puede tener más de un constructor o si una clase solo puede tener un constructor.
Bueno, podemos tener varios constructores en una clase. Una clase puede tener tantos constructores siempre que estén correctamente sobrecargados.
Entonces, ¿qué se entiende exactamente por sobrecarga de constructores?
La sobrecarga de constructores es un mecanismo que permite que una clase tenga tantos constructores de modo que todos estos constructores tengan listas de parámetros diferentes, ya sea según los tipos de parámetros o el orden de los parámetros.
El siguiente programa demuestra la sobrecarga del constructor.
|_+_|Producción:
En el programa anterior, tenemos una clase que contiene tres constructores. El primer constructor es un constructor sin argumentos, y luego tenemos uno con un argumento y dos argumentos respectivamente. Como el constructor tiene una lista de parámetros única, podemos decir que los constructores están sobrecargados.
Constructor 'this ()' en Java
En una clase que contiene varios constructores, ¿qué pasa si queremos llamar a un constructor de otro constructor en esta clase?
Para ello, utilizamos la palabra clave “this” dentro del constructor desde el que queremos llamar a otro constructor.
Entonces, cuando una clase tiene múltiples constructores, un constructor sin argumentos y un constructor parametrizado, usamos la palabra clave 'this' para llamar a un constructor parametrizado desde el constructor sin argumentos. Esto también se llama “Invocación explícita de constructor”.
¿Por qué necesitamos esta palabra clave?
Lo necesitamos porque la invocación explícita de constructores no es posible directamente usando solo el nombre del constructor.
Puntos a tener en cuenta:
- La palabra clave 'esto' debe ser la primera declaración en el constructor de llamada.
- Si un constructor tiene la palabra clave 'this', entonces no puede tener 'super'. Esto significa que el constructor puede tener super o this.
Producción:
En el programa anterior, tenemos un 'TestClass' con dos constructores. A esto lo llamamos ('SoftwareTestingHelp') del constructor no-args. Esta es la invocación explícita del constructor parametrizado.
Copiar constructor en Java
Somos conscientes del constructor de copias en C ++. El constructor de copia es un constructor que tiene una referencia de objeto como argumento y se crea un nuevo objeto utilizando los datos del objeto de referencia.
C ++ proporciona un constructor de copia predeterminado si no se proporciona uno en el programa.
Java también proporciona soporte para el constructor de copias, pero no proporciona un constructor de copias predeterminado.
El siguiente programa Java demuestra el constructor de copias utilizando el ejemplo clásico de números complejos que tienen componentes reales e imaginarios.
|_+_|Producción:
El programa anterior tiene una clase 'Complejo' que tiene un constructor parametrizado y un constructor de copia. En el método principal primero, creamos un objeto c1 usando un constructor parametrizado. Luego, usando la siguiente declaración,
|_+_|La declaración anterior llama al constructor de copia cuando la referencia c1 se pasa al constructor mientras se crea un nuevo objeto c2.
Encadenamiento de constructores en Java
El encadenamiento de constructores es un proceso en el que un constructor llama a otro constructor de la misma clase.
Incluso cuando hemos heredado de una clase base, el constructor de la clase base se invoca primero cuando se crea el objeto de la clase secundaria. Este es también un ejemplo de encadenamiento de constructores.
En Java, el encadenamiento de constructores se puede lograr mediante dos enfoques:
- Dentro de la misma clase : Cuando llamamos a un constructor desde otro constructor de la misma clase, podemos usar esta palabra clave ().
- De la clase base: Un constructor de la clase base puede ser llamado por el de la clase derivada usando la palabra clave super.
¿Por qué necesitamos el encadenamiento de constructores?
Cuando queremos realizar múltiples tareas en nuestro constructor, entonces en lugar de realizar cada tarea en un constructor, dividimos las tareas en múltiples constructores, y luego llamamos constructores entre sí, lo que resulta en un encadenamiento de constructores.
A continuación se muestran algunas de las reglas que debemos seguir al realizar el encadenamiento de constructores.
- El encadenamiento de constructores se realiza en cualquier orden y producirá los mismos resultados.
- La expresión 'esta' palabra clave debe ser la primera expresión del constructor.
- Deberíamos tener al menos un constructor sin esta palabra clave.
Cuando tenemos una herencia en nuestro programa, también podemos realizar el encadenamiento de constructores. En este caso, la subclase llamará al constructor de la clase base. Al hacer esta subclase, la creación de objetos comienza con la inicialización de los miembros de la superclase.
Ahora implementaremos el encadenamiento de constructores en Java usando los enfoques anteriores.
# 1) Encadenamiento de constructores dentro de la misma clase
|_+_|Producción:
Como ya se mencionó, logramos el encadenamiento de constructores dentro de la misma clase usando la palabra clave 'this'. En el programa anterior, tenemos tres constructores y llamamos a un constructor de otro usando la palabra clave 'this'.
De la clase base
Cuando una clase hereda otra clase, el constructor de la clase padre se invoca primero cuando creamos un objeto de una clase derivada que es el encadenamiento de constructores.
Si queremos llamar explícitamente al constructor de la clase base en la clase derivada, entonces deberíamos usar la palabra clave 'super' para este propósito. Usando la palabra clave 'super' podemos llamar a los constructores de superclase en la jerarquía de herencia hasta que alcancemos la clase más alta.
El siguiente programa demuestra el uso de una palabra clave 'super' para el encadenamiento de constructores.
|_+_|Producción:
En el programa anterior, invocamos el constructor parametrizado de la clase derivada con el valor 'Java'. Este constructor a su vez tiene una llamada al constructor de la clase base usando 'super (nombre);' que ejecuta el constructor parametrizado de la clase base.
Preguntas frecuentes
P # 1) ¿Cómo se crea un constructor en Java?
Responder: Creamos un constructor como un método especial que tiene el mismo nombre que el nombre de la clase. Un constructor tampoco puede tener un tipo de retorno. Puede tener modificadores de acceso, pero no puede ser final, estático, abstracto o sincronizado.
Si ABC es una clase, entonces podemos definir su constructor como
|_+_|P # 2) ¿Cuál es el beneficio de un constructor en Java?
Responder: Usando el constructor, podemos inicializar los miembros de la clase como lo primero que se crea el objeto de momento. Constructor elimina la necesidad de llamar implícitamente a métodos normales.
Podemos realizar varias tareas relacionadas con la inicialización, iniciar tareas, etc. en el constructor, ya que los constructores se invocan durante la fase de creación del objeto.
pregunta y respuesta de la entrevista de soporte técnico
P # 3) ¿Por qué se utilizan constructores?
Responder: Los constructores se utilizan principalmente para inicializar los miembros de la clase y se invocan cuando se crea el objeto de la clase.
P # 4) ¿Constructor puede ser privado?
Responder: Sí, podemos tener un constructor privado. Cuando el constructor es privado, se puede evitar que se cree una instancia de la clase.
Q # 5) ¿Constructor puede ser definitivo?
Responder: No, no podemos tener un constructor final.
Conclusión
En este tutorial, hemos comenzado nuestra discusión sobre constructores en Java. Aprendimos los conceptos básicos del constructor, su creación y las reglas a seguir. También discutimos los constructores de copias en Java.
El constructor predeterminado y los tipos de constructores y conceptos como la sobrecarga de constructores y el encadenamiento de constructores se informaron con ejemplos. Como parte de estos temas, también vimos el uso de 'esta' palabra clave en constructores.
=> Lea la serie de formación Easy Java.
Lectura recomendada
- Objeto Java Class Vs: cómo utilizar la clase y el objeto en Java
- Conceptos básicos de Java: sintaxis de Java, clase de Java y conceptos básicos de Java
- Clase Java Integer y Java BigInteger con ejemplos
- Tutorial de clase de escáner de Java con ejemplos
- Tutorial de clase de matriz de Java - clase java.util.Arrays con ejemplos
- ¿Qué es Java Vector | Tutorial de clase de vector de Java con ejemplos
- Tutorial de interfaz Java y clase abstracta con ejemplos
- Clase de robot en Selenium WebDriver con Java