Está en la página 1de 11

YOUR LOGO

HERE

/03
/Declaring
Constructors

INDEX.HTML
/
INTRODUCCI
ÓN
Como ya hemos visto: un constructor es
un método especial que coincide con el
nombre de la clase y no tiene tipo de
retorno. Se llama cuando se crea una
nueva instancia de la clase.

INDEX.HTML
YOUR LOGO
HERE

/CREANDO UN CONSTRUCTOR

El primero no coincide con el nombre de la


El nombre del constructor, Bunny, clase porque Java distingue entre
coincide con el nombre de la clase, mayúsculas y minúsculas. Como no
Bunny, y no hay ningún tipo de coincide, Java sabe que no puede ser un
return, ni siquiera void. Eso hace constructor y se supone que es un método
que esto sea un constructor. normal. Sin embargo, le falta el tipo de
retorno y no se compila.

INDEX.HTML
YOUR LOGO
HERE

/MÚLTIPLES CONSTRUCTORES

Una clase puede tener varios constructores,


siempre que cada constructor tenga una
firma única. En este caso, eso significa que los
parámetros del constructor deben ser
distintos. Al igual que los métodos con el
mismo nombre pero firmas diferentes, la
declaración de varios constructores con
firmas diferentes se conoce como sobrecarga
de constructores.

INDEX.HTML
YOUR LOGO
HERE

/CONSTRUCTOR PREDETERMINADO
Cada clase en Java tiene un constructor, ya
sea que codifique uno o no. Si no incluye
ningún constructor en la clase, Java creará
uno para usted sin ningún parámetro. Este
constructor creado por Java se denomina
constructor predeterminado y se agrega
cada vez que se declara una clase sin ningún
constructor.

El constructor predeterminado tiene una


lista de parámetros vacía y un cuerpo vacío.
Está bien que escribas esto tú mismo. Sin
embargo, dado que no hace nada, Java se
complace en generarlo para usted y
ahorrarle algo de trabajo.

INDEX.HTML
YOUR LOGO
HERE

/LLAMAR A CONSTRUCTORES
SOBRECARGADOS CON this()
Recuerde, una sola clase puede tener múltiples
constructores. Esto se conoce como sobrecarga de
constructores porque todos los constructores tienen el
mismo nombre inherente pero una firma diferente.

Esto no funcionará. Los constructores solo se pueden llamar


escribiendo new antes del nombre del constructor. No son como
los métodos normales a los que simplemente puede llamar.
Compila, pero no como se desea, crea 2 objetos y
descarta al primero

INDEX.HTML
YOUR LOGO
HERE

Solución al anterior caso: ¡usa un this()! Llamar a this() tiene una regla especial que
debe conocer. Si elige llamarlo, la llamada
Cuando this() se usa con paréntesis, Java this() debe ser la primera declaración en el
llama a otro constructor en la misma instancia constructor. El efecto secundario de esto es que
de la clase. solo puede haber una llamada a this() en
cualquier constructor.

INDEX.HTML
YOUR LOGO
HERE

/REGLAS DEL THIS()

/NINGUNA LINEA /SIN LLAMADAS


ANTES INFINITAS

Aunque una declaración de impresión en la línea 4 no El compilador es capaz de detectar que


cambia ninguna variable, sigue siendo una declaración este constructor se está llamando a sí
de Java y no se permite insertarla antes de la llamada a mismo infinitamente. Dado que este
this(). El comentario en la línea 5 está bien. Los código nunca puede terminar, el
comentarios no se consideran declaraciones y están compilador se detiene y lo informa
permitidos en cualquier parte. como un error.

INDEX.HTML
YOUR LOGO
HERE

/DIFERENCIAS DE THIS Y THIS()

/THIS /THIS()

Se refiere a una instancia Se refiere a una llamada de


de la clase constructor dentro de la
clase.

INDEX.HTML
YOUR LOGO
HERE

/LLAMARA A LOS CONSTRUCTORES


PRINCIPALES CON super()
En Java, la primera declaración de cada
constructor es una llamada a otro constructor
dentro de la clase, usando this(), o una
llamada a un constructor en la clase principal
directa, usando super(). Si un constructor
padre toma argumentos, entonces la llamada
super() también toma argumentos.
En la primera clase, Animal, la primera
declaración del constructor es una llamada al
constructor principal definido en
java.lang.Object, que no acepta argumentos.
En la segunda clase, Zebra, la primera
declaración del primer constructor es una
llamada al constructor de Animal, que toma
un solo argumento.

INDEX.HTML
YOUR LOGO
HERE

/DIFERENCIAS DE SUPER Y SUPER()

/SUPER /SUPER()

Se usa para hacer Llama a un constructor


referencia a miembros de padre.
la clase padre.

INDEX.HTML

También podría gustarte