Duda sobre Constructores
Hola! soy nueva en el foro y también en lo que respecta a Java, estoy estudiando el libro de Deitel y me esta costando trabajo entender lo que es y hace un constructor, el ejemplo que estoy tratando de entender es el siguiente, se divide en 2 partes, disculpen si no lleva las sangrias correspondientes, mis preguntas estan en la parte inferior del post:
PREGUNTAS:
1.- En la clase Figuras, en el comentario "El constructor establece la opción del usuario" porque se hace la asignacion opcion = opcionUsuario; no debería ser lo contrario ya que la variable opción es la que tiene almacenada la elección del usuario en la clase principal?
2.- Si alguien es tan amable de explicarme cual es la función de un constructor se los agradecería =) es diferente a crear un objeto de una clase? ej. JFrame aplicacion = new JFrame(); expliquenmelo con peras y manzanas por favor! tengo años sin practicar la programación! me la he vivido utilizando ArcGis y Autocad Map y ahora estoy tratando de aprender Java ya que he visto que tiene buena demanda en mi ciudad.
Por su ayuda MIL GRACIAS! =)
- Inicie sesión o regístrese para enviar comentarios
Un Constructor es un método
Un Constructor es un método especial en Java empleado para inicializar valores en Instancias de Objetos, a través de este tipo de métodos es posible generar diversos tipos de instancias para la Clase en cuestión; la principal característica de este tipo de métodos es que llevan el mismo nombre de la clase
tal y como lo dice la cita que te pase la funcion del constructor es inicializar valores en instancias de objetos.
Con esto le estas inicializando una instancia de la OpcionUsuario.
Espero a ver sido claro y ojala alguien mas pueda colaborar para apoyarte en esto.
Pues @CesarAlducin ya te
Pues @CesarAlducin ya te respondió correctamente. Pero aquí va mi explicación.
Te responderé de acuerdo a tus preguntas:
1.- Cuando en la clase PruebaFiguras creas una instancia (objeto) de la clase Figuras estas llamando al constructor de la clase Figuras.
que pertenece a tu clase PruebaFiguras entonces, cuando creas el objeto llamas al constructor de la clase Figuras que recibe un valor de tipo entero que se llama
y el parámetro es asignado a tu variable de instancia que se llama
ahora tu variable de instancia opcion es inicializada con el valor de tu variable local( la de PruebaFiguras) y allí termina el constructor.
Haber, ¿Como esta eso? Pues así;
Cuando esa linea es ejecutada toma como parámetro la variable de tipo entero llamada
2.-Cuando haces un
estas haciendo exactamente lo mismo que con
. La diferencia radica en el parámetro que reciben los dos contructores de dichas clases. En la clase Figuras, al crear una instancia de esa clase debes de pasarle como parámetro un valor de tipo entero si o si.
En cambio con la clase JFrame es diferente, porque esta puede no recibir ningún parámetro o puede recibir otro tipos de valores. Dale click aquí
y revisa la parte que dice Constructor Summary. El que la clase JFrame pueda recibir varios tipos de valores se le llama Sobrecarga de constructores (esto también puede hacerse con los métodos normales y se llama sobrecarga de metodos).
Espero que te haya servido la explicación. Saludos.
Gracias!
Ok, muchas gracias por su tiempo y respuestas a los dos Cesar y Jose Manuel, ya me quedo mas claro! =)
Saludos!
>1.- En la clase Figuras, en
1.- En la clase Figuras, en el comentario "El constructor establece la opción del usuario" porque se hace la asignacion opcion = opcionUsuario; no debería ser lo contrario ya que la variable opción es la que tiene almacenada la elección del usuario en la clase principal?
No, el atributo opción pertenece a la clase y la variable opcionUsuario es un parámetro del constructor:
2.- Si alguien es tan amable de explicarme cual es la función de un constructor se los agradecería =) es diferente a crear un objeto de una clase? ej. JFrame aplicacion = new JFrame(); expliquenmelo con peras y manzanas por favor! ..
Si, esa es justamente su función, crea un objeto de la clase ( lo instancía ).
No es un método, ni un método especial. Es en todo caso como un método en tanto que se parece mucho, pero lo más importate que lo diferencía es:
1. No tiene tipo de retorno ( y por lo tanto no se utiliza return )
2. Lleva siempre el nombre de la clase
3. Crea una instancia de la clase siempre que es invocado.
Como bien sabes, las clases son similares a los planos de una casa en tanto que especifican los atributos de la casa. Y los objetos son como casas construidas con esos planos.
Un constructor, pues, construye una casa.
Con Peras:
Se le pueden pasar argumentos para construir objetos con características diferentes
Saludos
Entonces un constructor es
Entonces un constructor es como un elemento propio de una clase y en el que su identificador coincide con el del nombre de la clase.
Si esto es así; quedamos de acuerdo en que no es ningún método especial ni método de nada. Es un elemento propio de la clase, usado para inicializar los atributos de una clase durante un instanciamiento.
¿Ando bien?