Autor
|
Tema: Creando una subclase de Point (Leído 2,481 veces)
|
Feedeex
Desconectado
Mensajes: 173
|
Hola a todos. Estoy aprendiendo java y aún no logro entender algunas cosas. Si tengo el siguiente 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í?: 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í: 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
Mensajes: 646
Divide y vencerás
|
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: 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
Mensajes: 173
|
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
Mensajes: 646
Divide y vencerás
|
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
Mensajes: 173
|
Muchas gracias por la explicación. Ya no tengo más dudas por el momento.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
creando Matrices en.NET
.NET (C#, VB.NET, ASP)
|
istrokke
|
2
|
2,973
|
24 Febrero 2009, 23:01 pm
por bitarray
|
|
|
creando un dvd
Multimedia
|
renato145
|
2
|
2,332
|
10 Enero 2007, 01:30 am
por Songoku
|
|
|
¿creando una esfera?
« 1 2 »
Diseño Gráfico
|
zhynar_X
|
10
|
5,968
|
22 Julio 2007, 22:50 pm
por Goreman
|
|
|
B y C heredan de A. Usar objetos instanciados en otra subclase
Java
|
Lorkz
|
7
|
5,118
|
15 Noviembre 2010, 05:38 am
por sapito169
|
|
|
Acceder a atributo de subclase
Java
|
Baal_30
|
7
|
3,164
|
6 Mayo 2015, 22:47 pm
por Baal_30
|
|