La relación IS-A entre objetos::
class Vehiculo{
//cosas de un vehiculo
}
class Carro extends Vehiculo{
//codigo de carro además de cosas
//heredadas del Vehiculo
}
class Tsuru extends Carro{
//cosas específicas de un Tsuru además de
//cosas heredadas de la clase Carro
}
En programación orientada a objetos podemos decir en base a lo anterior que:
- Vehiculo es la superclase de Carro
- Carro es una subclase de Vehiculo
- Carro es la superclase de Tsuru
- Tsuru es una subclase de Vehiculo
- Carro hereda de Vehiculo
- Tsuru hereda tanto de Vehiculo como de Carro
- Tsuru es un derivado de Carro
- Carro es un derivado de Vehiculo
- Tsuru es un derivado de Vehiculo
- Tsuru es un subtipo de Carro y Vehiculo
Regresando a la relación IS-A:
- "Carro extends Vehiculo" significa "Carro es un (IS-A) Vehiculo"
- "Tsuru extends Carro" significa "Tsuru es un (IS-A) Carro"
Polimorfismo::
+ Una variable de referencia solo puede ser de un tipo, una vez declarada, dicho tipo no puede cambiar pero sí el objeto hacia el cual refiere.
+ Una referencia es variable, por lo tanto, esta puede ser reasignada a otros objetos (a menos de que la variable sea marcada como final).
+ Una variable de referencia puede referir a cualquier objeto del mismo tipo declarado en la referencia o puede referir a cualquier subtipo del tipo declarado.
+ Una variable de referencia puede ser declarada de tipo clase o interfaz, si la variable es de tipo interfaz, puede referenciar a cualquier objeto que implemente dicha interfaz.
Un ejemplo basado en lo anterior:
class Vehiculo{
//Funcion predeterminada de un Vehiculo
}
class Carro extends Vehiculo{
//Funcion predeterminada de un Carro
//así como cosas heredadas de un Vehiculo
}
public class Tsuru extends Carro{
public Tsuru() {
}
public static void main(String[] args){
Vehiculo vh = new Carro();
Carro ct = new Tsuru();
Vehiculo vt = new Tsuru();
System.out.println(vh.toString());
System.out.println(ct.toString());
System.out.println(vt.toString());
}
}
Al ejecutar lo anterior obtendremos algo parecido a:
Carro@1d9dc39
Tsuru@93dcd
Tsuru@b89838
De igual manera sucede si implementamos el polimorfismo con interfaces:
interface Rodable{
//métodos de la interfaz Rodable
}
class Vehiculo{
//Funcion predeterminada de un Vehiculo
}
class Carro extends Vehiculo implements Rodable{
//Funcion predeterminada de un Carro
//así como cosas heredadas de un Vehiculo
}
public class Tsuru extends Carro{
public Tsuru() {
}
public static void main(String[] args){
Rodable rd1 = new Carro();
Rodable rd2 = new Tsuru();
System.out.println(rd1.toString());
System.out.println(rd2.toString());
}
}
Al ejecutar lo anterior obtenemos algo así:
Carro@93dcd
Tsuru@b89838
Es todo lo que veremos sobre polimorfismo. ¿Alguna duda? deja tu comentario.
Más sobre programación en Java aquí.
Buehh post Graxxx Men...
ResponderBorrar