Puntero de auto-referencia

Hola de nuevo:
Si yo tengo esta clase:
*************************************
class persona
{
int edad;
........
........
.......
public void establecerEdad(int edad)
{
this.edad = edad;
}
*************************************
A ver si son ciertas mis afirmaciones:
1.- El método va a recibir valores de datos de tipo "int".
2.- "this.edad" se refiere a la variable de instancia
3.- Por lo tanto el parámetro que reciba el método, por ejemplo "3", se asignará a la variable de instancia (int edad).
¿Estas tres afirmaciones son ciertas?
¿Solo tiene this esta utilidad?
Creo que tambien para constructores.
Pero no entiendo la utilidad del this

1 respuesta

Respuesta
1
En java, los parámetros de la clase son los que más peso tienen a la hora de hablar "por defecto", es decir, si se almacena algo en un parámetro (variable) siempre se almacenará en el parámetro con ese nombre que este en la clase.
Si no deseamos esto, se debe utilizar "this", que hace referencia al nivel actual donde se esta nombrando el parámetro (casi siempre un método de una clase).
Por otra parte existe también el modificador "super" que funciona como "this" pero hacia el otro lado. Cuando una clase hereda de otra, y queremos hacer referencia a métodos o parámetros de la clase principal, se utiliza "super".
Resumiendo, en caso de tener nombres iguales de métodos o parámetros, por defecto es de la clase actual, si se usa "this" nos referimos al método actual y si utilizamos "super" nos referimos a la clase primaria (herencia de la clase actual).
Bien; a ver si es lo que entiendo es lo correcto:
"En este caso tenemos dos variables diferentes con el mismo nombre, el de la clase y el del método(edad).El método recibirá parámetros de tipo "int".Si por ejemplo recibe un "3" como parámetro el método fijara la edad en "3", pero no asignará "3" a la variable "int edad".
Vaya, no se si me he liado, un ejemplo practico como con el "3" me ayudaría.
¿Es correcto lo que te comento?
Muchas gracias y un saludo
Vaya lio que me estoy haciendo yo también.
Voy a definir cEdad como la variable "edad" de la clase y mEdad como el parámetro de entrada del método.
Si traducimos a Pseudocódigo:
1.- Método "establecerEdad"
- Entrada, int con la edad
- Salida, ninguna
1.1.- modifica la variable cEdad con el parámetro de entrada del método.
Como ejemplo, si llamamos al método de la forma establecerEdad(3), lo que ocurre es lo siguiente:
1.- La variable edad (mEdad) del método guarda el valor 3.
2.- Se ejecuta el método.
3.- En la variable edad (cEdad) de la clase se guarda el valor que contiene el valor de la variable edad (mEdad) del método (valor 3).
Resumiendo, tanto la variable del método como la de la clase terminarán valiendo 3, solo que la variable del método se destruirá una vez finalice la ejecución. Quedándose únicamente la variable de la clase.
Se que esto es difícil de entender, ya que son conceptos muy abstractos. A ver si lo he conseguido ahora.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas