28
Abr
13

Propiedades de la P.O.O. (Clases abstractas)

Las clases abstractas en cierta forma son muy parecidas a las interfaces y son muy parecidas a las clases normales.  Una clase abstracta puede tener o no métodos abstractos, no pueden ser instanciadas y son utilizadas como “plantilla” para otras clases ya que si pueden ser heredadas.

Son parecidas a las interfaces ya que podemos declarar métodos abstractos y de estos no especificar la implementación, lo que obliga a las sub-clases (no abstractas) a describir la implementación de dicho método(abstract void metodo();), todos los métodos de una interfaz son abstractos sin necesidad de decirlo de manera explicita.

Tanto las interfaces como las clases abstractas permiten implementar la figura de polimorfismo dentro del código, la diferencia mas notable que hay es que en las interfaces no se puede describir la implementación de un método y la declaración de sus variables deben ser final y estáticas, dejando así una “plantilla” en blanco para ser implementada totalmente por la clase que use dicha interfaz; y por otro lugar en las clases abstractas se comparte una porción de la implementación de los métodos; proveyendo parte de la funcionalidad y dejando la otra parte para ser implementada por la sub-clase. O sea una clase abstracta con todos los métodos abstractos debería ser declarada como interfaz, de igual manera una clase abstracta que no declare ningún método abstracto debe ser declarada como una clase normal.

package ingenio.ds.examples;

public class ClasesAbstractas {

   	public static void main(String argumentos[]){
		//*Creamos instancias de las sub-clases Bicicleta, Avion, Submarino*/
		VehiculoAereo v1=new VehiculoAereo();
		VehiculoTerrestre v2=new VehiculoTerrestre();
		VehiculoAcuatico v3=new VehiculoAcuatico();

		//*seteamos valores para el VehiculoAereo*/
		v1.nombre="Avión";
		v1.velocidadActual=0.0001;
		v1.velocidadMaxima=850.0;
		v1.cantidadTripulacion=2;
		v1.alturaMaxima=10400.0;

		//*seteamos valores para la VehiculoTerrestre*/
		v2.nombre="Automovil";
		v2.tipoTerreno="Desertico";
		v2.velocidadActual=1.0;
		v2.velocidadMaxima=60.0;
		v2.cantidadTripulacion=1;

		//*seteamos valores para el VehiculoAcuatico*/
		v3.nombre="Lancha";
		v3.velocidadActual=0.0001;
		v3.velocidadMaxima=460.0;
		v3.cantidadTripulacion=8;

		//*Creamos un arreglo de la super clase y agregamos
		//las instancias de las sub clases*/
		Vehiculo[] vehiculos= new Vehiculo[]{v1,v2,v3};
		mostrar(vehiculos);
	}

	public static void mostrar(Vehiculo instancias[]){
		for(Vehiculo instancia:instancias){
			instancia.mostrar();
			System.out.println("");
		}
	}
}

abstract class Vehiculo{
	String nombre;
	String tipoVehiculo;
	String fuenteEnergia="Motor";
	Double velocidadMaxima;
	Double velocidadActual;
	Double relacionAceleracion;
	int cantidadTripulacion;

	public void mostrar(){
		System.out.println(" Información del vehículo");
		System.out.println(" Nombre ...........: "+nombre);
		System.out.println(" Tipo   ...........: "+tipoVehiculo);
		System.out.println(" Fuente de energía : "+fuenteEnergia);
		System.out.println(" Tripulación ......: "+cantidadTripulacion);
		System.out.println(" Velocidad máxima .: "+velocidadMaxima);
		System.out.println(" Velocidad actual .: "+velocidadActual);
	}
}

class VehiculoTerrestre extends Vehiculo{
	String tipoTerreno;

	public VehiculoTerrestre(){
		tipoVehiculo="Terrestre";
	}

	public void mostrar(){
		super.mostrar();
		System.out.println(" Tipo de terreno ..: "+tipoTerreno);
	}
}

class VehiculoAcuatico extends Vehiculo{
	String tipoNavegacion;

	public VehiculoAcuatico(){
		tipoVehiculo="Acuatico";
	}
}

class VehiculoAereo extends Vehiculo{
	Double alturaMaxima;
	String tipoCarga;

	public VehiculoAereo(){
		tipoVehiculo="Aereo";
	}
}

0 Responses to “Propiedades de la P.O.O. (Clases abstractas)”



  1. Dejar un comentario

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s


I+Ds

Dudas consultas
Facebook
Twiter
Google +

Escribe tu dirección de correo electrónico para suscribirte a este blog, y recibir notificaciones de nuevas publicaciones por correo.

Únete a otros 348 seguidores

Ingenio DS en Facebook

Redes Sociales y Archivos

Entradas

abril 2013
L M X J V S D
« Feb   May »
1234567
891011121314
15161718192021
22232425262728
2930  

IngenioDS en twiter


A %d blogueros les gusta esto: