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

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


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

Desconectado Desconectado

Mensajes: 173


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

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 am por Feedeex » En línea

Valkyr


Desconectado Desconectado

Mensajes: 646


Divide y vencerás


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

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
  1. public Punto3D(int x, int y, int z){
  2. this.x = x;
  3. this.y = y;
  4. this.z = z;
  5. }

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


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

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


Divide y vencerás


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

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


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

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 Matrices en.NET
.NET (C#, VB.NET, ASP)
istrokke 2 2,826 Último mensaje 24 Febrero 2009, 23:01 pm
por bitarray
creando un dvd
Multimedia
renato145 2 2,154 Último mensaje 10 Enero 2007, 01:30 am
por Songoku
¿creando una esfera? « 1 2 »
Diseño Gráfico
zhynar_X 10 5,509 Último mensaje 22 Julio 2007, 22:50 pm
por Goreman
B y C heredan de A. Usar objetos instanciados en otra subclase
Java
Lorkz 7 4,896 Último mensaje 15 Noviembre 2010, 05:38 am
por sapito169
Acceder a atributo de subclase
Java
Baal_30 7 2,956 Último mensaje 6 Mayo 2015, 22:47 pm
por Baal_30
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines