NOTA: La traducción de esta documentación es un esfuerzo personal y voluntario, no es un documento oficial de Sun Microsystems ni Oracle ni está patrocinado por ninguna de estas empresas. Los documentos originales (en inglés) están disponibles en: http://java.sun.com/docs/books/tutorial/.
Dirija cualquier comentario, petición, felicitación, etc. a tutorialesjava_@RROBA_codexion.com.
Si desea ayudar a mantener en funcionamiento esta web, colaborar con la traducción de estos documentos o necesita que se traduzca algĂșn capĂ­tulo en concreto puede realizar una donación directa mediante Paypal:
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