Proporcionar constructores para las clases (Los tutoriales Java™ > El lenguaje Java > Clases y objetos)
Ruta: El lenguaje Java
Lección: Clases y objetos
Sección: Clases
Proporcionar constructores para las clases
Página inicial > El lenguaje Java > Clases y objetos
Proporcionar constructores para las clases
Una clase contiene constructores que se invocan para crear objetos desde el «plano» de la clase. Las declaraciones de constructores se parecen a las declaraciones de método, excepto en que utilizan el nombre de la clase y no tienen valor de retorno. Por ejemplo, Bicycle tiene un constructor:
public Bicycle(int startCadence, int startSpeed, int startGear) {
        gear = startGear;
        cadence = startCadence;
        speed = startSpeed;
}
 
Para crear un nuevo objeto de tipo Bicycle llamado myBike el operador new llama a un constructor :
Bicycle myBike = new Bicycle(30, 0, 8);

new Bicycle(30, 0, 8) crea un espacio en memoria para el objeto e inicializa sus campos.

Aunque Bicycle solamente tiene un constructor, podría tener más, incluso un constructror sin argumentos:

public Bicycle() {
        gear = 1;
        cadence = 10;
        speed = 0;
}

Bicycle yourBike = new Bicycle(); invoca al constructor sin argumentos para crear un nuevo objeto Bicycle llamado yourBike.

Se podrían haber declarado ambos constructores en Bicycle porque tienen listas de argumentos distintos. Igual que con los métodos, la plataforma Java diferencia entre constructores basándose en el número de argumentos en la lista y sus tipos. No puede escribir dos constructores que tengan el mismo número y tipo de argumentos porque la plataforma no sabría distinguirlos. Hacerlo así causa un error al compilar.

No tiene por qué proporcionar ningún constructor para su clase, pero si lo hace debe ser cuidadoso. El compilador automáticamente proporciona un constructor predeterminado sin argumentos para todas las clases que carezcan de él. Este constructor predeterminado llamará al constructor sin argumentos de la superclase. En esta situación el compilador se quejará si la superclase no tiene un constructor sin argumentos, por lo que deberá verificar que disponga de él. Si su clase no tiene una superclase explícita, tendrá como superclase implícita Object, que sí tiene un constructor sin argumentos.

Puede usar el constructor de una superclase usted mismo. La clase MountainBike hacía justamente eso al inicio de esta lección. Esto se tratará más adelante en la lección acerca de interfaces y herencia.

Puede utilizar los modificadores de acceso en la declaración de un constructor para controlar qué otras clases pueden llamar al constructor.


Nota: Si otra clase no puede llamar un constructor de MyClass, no puede crear objetos de tipo MyClass directamente.
Pagina anterior: Definición de métodos
Página siguiente: Pasar información a un método o a un constructor

  ATENCIÓN: La traducción de esta documentación es un esfuerzo personal y voluntario. NO es un documento oficial del propietario de la tecnología Java, Oracle, ni está patrocinado por esta empresa.

Los documentos originales y actualizados (en inglés) están disponibles en: http://docs.oracle.com/javase/tutorial/. La versión disponible en este sitio es la publicada en Marzo de 2008 (más información en: "What's new and What's Old? The History of the Tutorial").

Dirige cualquier comentario, petición, felicitación, etc. a tutorialesjava@codexion.com.

Si quieres ayudar a mantener en funcionamiento esta web, colaborar con la traducción de estos documentos o necesitas que se traduzca algún capítulo en concreto puedes invitarme a un café: