elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 01:56  


Tema destacado: Grupo de Facebook de elhacker.net

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  [DUDA]Constructores this() y super()
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [DUDA]Constructores this() y super()  (Leído 1,792 veces)
Feedeex

Desconectado Desconectado

Mensajes: 172


Ver Perfil
[DUDA]Constructores this() y super()
« en: 8 Marzo 2011, 17:24 »

Buenas, estoy aprendiendo JAVA y llegue a la parte de POO. Entonces, quiero ver si entendí el funcionamiento de estos 2. Tengo el siguiente código:

Código:
package prueba;

import java.awt.*;
public class Punto3D extends Point {
     public int z;
    public Punto3D(int x, int y, int z) {
         super(x, y);
         this.z = z;
     }

    public void move(int x, int y, int z) {
         this.z = z;
         super.move(x, y);
     }

    public void translate(int x, int y, int z) {
         this.z += z;
         super.translate(x, y) ;
     }

 }

• Importo la librería java.awt.* que contiene la parte gráfica.
• Creo una clase publica llamada Punto3D y extiendo sus valores usando los de su superclase Point (de java.awt).
Luego acá vienen mis dudas...

• ¿super() se utiliza para "decirle" a JAVA que asigne a x,y los valores de su superclase?. No lo entiendo muy bien.
• ¿this() se utiliza para decirle a JAVA que asigne a z el valor de su subclase?, es decir, ¿la que se pasa por parámetro llamando a la 'funcion'?.

Estuve buscando información, leí y llegué a ese punto pero... no comprendo el total funcionamiento de estos constructores aunque creo que tampoco estoy muy errado, ¿cierto?.

Muchas gracias.


En línea
Devilboy.Devil

Desconectado Desconectado

Mensajes: 147


Ver Perfil
Re: [DUDA]Constructores this() y super()
« Respuesta #1 en: 8 Marzo 2011, 20:26 »

Buenas, estoy aprendiendo JAVA y llegue a la parte de POO. Entonces, quiero ver si entendí el funcionamiento de estos 2. Tengo el siguiente código:

Código:
package prueba;

import java.awt.*;
public class Punto3D extends Point {
     public int z;
    public Punto3D(int x, int y, int z) {
         super(x, y);
         this.z = z;
     }

    public void move(int x, int y, int z) {
         this.z = z;
         super.move(x, y);
     }

    public void translate(int x, int y, int z) {
         this.z += z;
         super.translate(x, y) ;
     }

 }

• Importo la librería java.awt.* que contiene la parte gráfica.
• Creo una clase publica llamada Punto3D y extiendo sus valores usando los de su superclase Point (de java.awt).
Luego acá vienen mis dudas...

• ¿super() se utiliza para "decirle" a JAVA que asigne a x,y los valores de su superclase?. No lo entiendo muy bien.
• ¿this() se utiliza para decirle a JAVA que asigne a z el valor de su subclase?, es decir, ¿la que se pasa por parámetro llamando a la 'funcion'?.

Estuve buscando información, leí y llegué a ese punto pero... no comprendo el total funcionamiento de estos constructores aunque creo que tampoco estoy muy errado, ¿cierto?.

Muchas gracias.


tienes un constructor:


Código:

string nombre;

public Constructor(string nombre)
{

    //como ves la variable de instancia se llama igual que el atributo del constructor
    // es aki cuando Debes usar this para asignarlos de la sig forma

    this.nombre = nombre;


}

sino kieres usar this ps asigna otros nombres de la sig forma:

Código:
string nombre;

public Constructor(string nombre_persona)
{

nombre = nombre_persona

}

ahora el uso de super es para poder usar los atributos del constructor de la clase base y poder usarlos en la clase heredada


ademas super se usa para ocupar metodos de otras clases o clases heredadas


En línea
Valkyr


Desconectado Desconectado

Mensajes: 632


Divide y vencerás


Ver Perfil
Re: [DUDA]Constructores this() y super()
« Respuesta #2 en: 12 Marzo 2011, 02:07 »

Código:
public Punto3D(int x, int y, int z) {
         super(x, y);
         this.z = z;
     }

En este constructor, puesto que la clase que estás creando es una subclase de Point (o clase hija), la primera línea de código debe ser una llamada a algún constructor de la clase padre (o superclase, como quieras llamarlo), así que la linea de super(x, y) se usa para invocar al constructor de la clase Point e inicializar así los atributos x e y puesto que estarán declarados como atributos privados y es la única forma que tienes de inicializarlos.

Por otro lado para inicializar el atributo que has declarado z(el cual, a no ser que tengas pensando ya algo que te obligue a declararlo como publico, te recomendaría que lo declarases privado para mantener el principio de ocultación) se hace con la línea this.z = z, la palabra this hace referencia a la estancia actual, es decir, la clase desde la que se llama al metodo (por ejemplo imaginate que creas un objeto de la clase Punto3D llamado P3 y quieres llamar a un método, por ejemplo "move", la llamada se realizaría P3.move(parámetros...) pues en ese caso this hará referencia a P3). En ese constructor en concreto está puesto así puesto que el parámetro se llama igual que el atributo y no podrías inicializar la variable escribiendo z = z puesto que es ambiguo, por eso se utiliza el this en este caso.

Por útlimo decirte, cuando quieres llamar a un método de la clase padre (estas llamadas a métodos de la clase padre se realizan, sobre todo, cuando estás redefiniendo un método y quieres ejecutar el código de la clase padre por lo que sea) se realiza mediante super.nombre del metodo.

En fin, espero haberte aclarado algo en todo esto. Suerte y si no te aclaras te recomiendo que leas más sobre cosas básicas de Java.

Saludos y suerte.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
¡ Super DUDA !
Análisis y Diseño de Malware
HQ 4 465 Último mensaje 20 Octubre 2004, 11:00
por hIgOcHuMbO
Super Duda
Juegos y Consolas
RosDj 0 293 Último mensaje 12 Diciembre 2007, 11:42
por RosDj
Super duda
Programación Visual Basic
skyweb07 10 965 Último mensaje 13 Septiembre 2008, 02:22
por aaronduran2
super duda
Criptografía
Mr pom0 1 1,539 Último mensaje 2 Noviembre 2009, 11:38
por APOKLIPTICO
Super Duda :/
Hacking Básico
hacker_lol 10 1,234 Último mensaje 5 Julio 2010, 22:08
por Debci
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines