elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Los 10 CVE más críticos (peligrosos) de 2020


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [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 6,953 veces)
Feedeex

Desconectado Desconectado

Mensajes: 173


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

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: 155


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

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: 646


Divide y vencerás


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

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
Juegos y Consolas
RosDj 0 1,369 Último mensaje 12 Diciembre 2007, 11:42 am
por RosDj
Super duda « 1 2 »
Programación Visual Basic
skyweb07 10 3,295 Último mensaje 13 Septiembre 2008, 02:22 am
por aaronduran2
Super Duda :/ « 1 2 »
Hacking
hacker_lol 10 5,753 Último mensaje 5 Julio 2010, 22:08 pm
por Debci
Duda de Super Principiante « 1 2 3 4 »
Programación C/C++
Allitnam2004 30 11,618 Último mensaje 5 Enero 2011, 22:11 pm
por leogtz
Duda Constructores C++
Programación C/C++
mayistik 6 2,275 Último mensaje 5 Febrero 2014, 03:53 am
por mayistik
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines