Java - Herencia y Sustitución JAVA

 
Vista:

Herencia y Sustitución JAVA

Publicado por Esteban (1 intervención) el 11/01/2016 14:11:58
Hola, tengo una duda respecto a la herencia en JAVA.
Suponiendo que tengo una clase llamada Figura2D que tiene 2 hijos que son Triangulo y Circulo, que diferencia hay entre hacer:
-Figura2D f = new Circulo();
que hacer:
-Circulo f = new Circulo();
NO entiendo que diferencia hay ni cuales son los usos.

Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Herencia y Sustitución JAVA

Publicado por Tom (1831 intervenciones) el 11/01/2016 14:29:47
La diferencia es clara.
En Figura2D f = new Circulo(); f es un objeto de clase Figura2D, no de clase Circulo. Con lo que no contendrá los atributos o métodos específicos de Circulo.
Los usos, como siempre, son los que tú necesites o les quieras dar.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Herencia y Sustitución JAVA

Publicado por Tom (1831 intervenciones) el 11/01/2016 15:44:01
Pequeña rectificación ... f no _es_ un objeto de clase Figura2D, sino que lo tratas como un objeto de clase Figura2D. Para poder tratarlo como un objeto Circulo, debes hacer un cast ((Circulo)f).
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 10
Ha aumentado su posición en 2 puestos en Java (en relación al último mes)
Gráfica de Java

Herencia y Sustitución JAVA

Publicado por Marcelo (47 intervenciones) el 11/01/2016 17:51:46
Un agregado adicional a la explicación de Tom

Ese concepto se utiliza en plimorfismo. El objetivo de este concepto es utilizar diferentes subclases de una herencia (es lo mismo en el uso de interfaces) como si fueran la clase padre.

Ejemplo:
Si tuvieras la siguiente lista:
1
ArrayList<Figura2D> figuras = new ArrayList<>()

En dicha lista podrías guardar perfectamente elementos del tipo Figura2D, Circulo o del tipo Triangulo

Ahora imaginemos que la clase Figura2D tiene un metodo dibujar(). Si tu redefines dicho metodo en la clase Triangulo y en la clase Circulo puedes recorrer la lista figuras llamando al método dibujar sin importarte de que tipo sea la clase(dado que al momento de ejecutar dicho método, en RunTime, se ejecuta el método de la clases que se instancia y no del tipo que se referencia)

Ejemplo

1
2
3
4
5
6
figuras.add(new Figura2D());
figuras.add(new Circulo());
figuras.add(new Triangulo());
for(int i < 0; i <figuras.size(); i++){
     figuras.get(i).dibujar();
}

El polimorfismo es muy útil, especialmente en video juegos. Es una técnica básica para juegos que tienes muchos objetos que se crean y destruyen
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar