|
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:
|
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.