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! =)

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de CesarAlducin

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.

Imagen de Jose Manuel

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.
Haber, ¿Como esta eso? Pues así;
 
Cuando esa linea es ejecutada toma como parámetro la variable de tipo entero llamada   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.

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.

Imagen de Java_newbie

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

Imagen de Jose Manuel

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?