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,Bicycletiene un constructor:Para crear un nuevo objeto de tipopublic Bicycle(int startCadence, int startSpeed, int startGear) { gear = startGear; cadence = startCadence; speed = startSpeed; }BicyclellamadomyBikeel operadornewllama 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
Bicyclesolamente 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 objetoBicyclellamadoyourBike.Se podrían haber declarado ambos constructores en
Bicycleporque 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
MountainBikehací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 deMyClass, no puede crear objetos de tipoMyClassdirectamente.
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é: