martes, 25 de noviembre de 2008

Constructores e instansacion

Un costructor siempre es invocado cuando un objeto es creado.
Cada una de las superclases en un arbol de herencia tiene a un constructor llamado.
Todas las clases, incluso las clases abstractas tienen por lo meos un constructor.
Los constructores deben tener el mismo nombre de la clase.
Los constructores no tienen tipo alguno de retorno, si ves a un "cosntructor" con un tipo de retorno, no es un constructor es un metodo.
LA forma en que funcionan los contructores es la siguente:
-->Un cosntructor llama al costructor de su clase padre, este a su vez llama al costructor de su clase padre y asi sucesivamente.
-->El super super super (el ultimo padre) costructor se executa, luego continua el que lo halla llamado y asi sucesivamente.
Los constructores pueden usar cualquier modificador de acceso(incluso privado)
El compilador te crea un cosntructor por default si tu no creas ningun constructor explicitamente.
El constructor que se crea por default es un cosntructos sin argumentos, con una llamada a super();
La primera sentencia de un cosntructor debe de ser o this() (un constructor sobrecargado) o super().
Solo podemos acceder a los miembros de instancia luego de que el constructor se halla executado.
Las clases abstractas tienen constructores que son llamados cuando la primer subclase concreta los llama.
Las interfaces no tienen constructores.
Los constructores nunca son heredados, por los tanto no pueden ser sobreescritos.
Si una superclase no tiene un constructor sin argumentos entonces tenemos que poner un llamado a super() con argumentos a webos.
Un constructor solo puede ser llamado dentro de otro costructor usando las palabras this() o super().
Cosas que debemos hacer para llamar correctamente a this()
-->Deben aparecer solo en la primera sentencia del constructor.
-->La lista de argumentos nos dice cual constructor sobrecargado es llamado.
-->Constructores pueden llamar a constructores, que pueden llamar a cosntructores ya asi hasta que se te de la gana, pero al final alguno de ellos tiene que hacer un llamado al super() o el Universo Java como lo conocemos implocionaria(ok, solo se acaban los recursos de tu compu y se bloqueria(tal vez eso es peor :P))
-->llamados a this() y super() no pueden ir en el mismo constructor, puede poner cualquiera de los dos, pero no los dos al mismo tiempo.

-->

1 comentario:

El lado oscuro de java dijo...

Hola luis, muy buen post, yo hace poco hice un post tambien con el tema de los constructores en java te dejo el link, agregue un par de ejemplos.saludos
http://java-white-box.blogspot.com.ar/2013/12/javaplayer-constructores-en-java-que-es.html