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


Tema destacado: Recuperar cuenta de Google, GMail, Youtube

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

Desconectado Desconectado

Mensajes: 172


Ver Perfil
Creando una subclase de Point
« en: 1 Agosto 2011, 03:57 »

Hola a todos. Estoy aprendiendo java y aún no logro entender algunas cosas.

Si tengo el siguiente código:

Código:
package Punto3D;

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);
    }
    
}

¿De qué sirve que le indique a java que (x,y) son tomados de la superclase Point?. Si total ni x, ni y, ni z tienen ningún valor.

¿No sería lo mismo hacer así?:

Código:
this.z = z;
this.x = x;
this.y = y;

Acá estoy indicando que tanto x, como y, como z, son las coordenadas del objeto que estoy utilizando en ese momento... ¿entonces para qué usar super?.

A lo que voy es que no entiendo porque tengo que aclarar eso, si ninguna de las 3 tiene absolutamente ningún valor. Entonces, llamándola así:

Código:
objeto.move(x, y, z);

tendría que funcionar con las 2 formas que puse anteriormente, ¿o no?.


Como verán, estoy un poco enredado. Espero que puedan aclararme esa duda.

Muchas gracias.


« Última modificación: 1 Agosto 2011, 04:15 por Feedeex » En línea
Valkyr


Desconectado Desconectado

Mensajes: 632


Divide y vencerás


Ver Perfil
Re: Creando una subclase de Point
« Respuesta #1 en: 1 Agosto 2011, 12:51 »

Lo de super(x, y) se tiene que usar a la fuerza porque estás heredando de la clase Point, y los atributos de esa clase deben ser inicializados con el constructor de esa clase, ya que tú en tu clase Punto3D no puedes acceder de forma directa a esos atributos. Es decir, tú no podrías hacer lo siguiente:

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

El compilador te daría error, ya que estás intentando acceder a atributos que no están declarados en tu clase, si no que han sido heredados.

Por el mismo motivo en el método move debes hacer una llamada a super.move(x, y) porque si no, no podrías cambiar el valor de esos atributos.

Saludos.


En línea

Feedeex

Desconectado Desconectado

Mensajes: 172


Ver Perfil
Re: Creando una subclase de Point
« Respuesta #2 en: 1 Agosto 2011, 18:04 »

Gracias por responder. Creo que voy entendiendo un poco más. Pero entonces, si yo crearía la clase Point3D sin heredar de Point, declararía int x, y, z ¿y ahí si podría usar this para todos los objetos, no?.

No le veo utilidad entonces a Point digamos porque no ahorra mucho código y únicamente funciona con bidimensiones, ¿o me equivoco?.
En línea
Valkyr


Desconectado Desconectado

Mensajes: 632


Divide y vencerás


Ver Perfil
Re: Creando una subclase de Point
« Respuesta #3 en: 1 Agosto 2011, 21:39 »

La herencia en java sirve para la reutilización de código entre otras cosas, y aunque en tu caso no sean demasiadas lineas de código, o demasiadas funcionalidades, la herencia viene estupendamente. Además, es un buen hábito el desarrollar las clases empleando el código de otras que ya están programadas, por varios motivos, entre ellos, que te ahorras mucho trabajo, y si detectas un error tan solo debes corregirlo en sitios muy puntuales.

Como tú dices, si no heredases de Point podrías declarar los tres atributos y asignarles valores tal y como dices, aunque heredando también puedes declarar tres atributos con el mismo nombre que los que hay en la clase padre y manipularlos, pero estarías duplicando atributos, lo cual no es que sea muy bueno.

Yo dejaría el código como está, heredando de Point, así si alguna vez quisieses añadir alguna funcionalidad para la clase Punto la tendrías también en la clase Point3D.

Saludos.
En línea

Feedeex

Desconectado Desconectado

Mensajes: 172


Ver Perfil
Re: Creando una subclase de Point
« Respuesta #4 en: 2 Agosto 2011, 01:00 »

Muchas gracias por la explicación. Ya no tengo más dudas por el momento.

 ;-)
En línea
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Creando el server, creando el ataque... « 1 2 3 4 5 »
Análisis y Diseño de Malware
Badcode 74 28,797 Último mensaje 29 Enero 2006, 22:32
por matfx
creando el server creando el ataque
Análisis y Diseño de Malware
charleston 1 375 Último mensaje 5 Junio 2004, 11:44
por Badcode
Creando una red wi-fi « 1 2 »
Hacking Wireless
Dolor-de-cabeza 20 1,566 Último mensaje 5 Marzo 2006, 02:36
por LostWorld
creando un dvd
Multimedia
renato145 2 427 Último mensaje 10 Enero 2007, 01:30
por Songoku
B y C heredan de A. Usar objetos instanciados en otra subclase
Java
Lorkz 7 1,446 Último mensaje 15 Noviembre 2010, 05:38
por sapito169
Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines