Ejemplos polimorfismo


public class Empleado {
	private String nombre;
	protected int sueldo;
	
	// getters y setters
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	
	public void setSueldo(int sueldo) {
		if (sueldo>900 && sueldo <10000) {
			this.sueldo = sueldo;
		}
		
	}
	public double sueldoNeto() {
		return sueldo*.87;
	}
	
	@Override
	public String toString() {
		return "Empleado [nombre=" + nombre + ", sueldo=" + sueldo + "]";
	}
	
}


public class Comercial extends Empleado {
	private double comision;
	private int ventas;
	
	public double getComision() {
		return comision;
	}
	public void setComision(double comision) {
		this.comision = comision;
	}
	public int getVentas() {
		return ventas;
	}
	public void setVentas(int ventas) {
		this.ventas = ventas;
	}
	@Override
	public double sueldoNeto() {
		return super.sueldoNeto()+ventas*comision;
	}
	
	
	
}


public class Directivo extends Empleado {
	@Override
	public double sueldoNeto() {
		return super.sueldoNeto()*2;
	}
}

	ArrayList<Vehiculo> tropa=new ArrayList<>();
		
		tropa.add(new Coche()); // Un coche es un vehículo
		tropa.add(new Bicicleta()); // Esto también
		tropa.add(new Coche());
		tropa.add(new Tanque()); // Y eso también lo es
		
		for(Vehiculo v:tropa) {
			v.acelerar(); // al acelerar estoy llamando al método de cada objeto
			v.derecha();
			System.out.println(v);
		}
		
		Empleado pepe=new Empleado();
		pepe.setSueldo(1000);
		Comercial ana=new Comercial();
		ana.setSueldo(1000);
		ana.setComision(.05);
		ana.setVentas(20000);
		Directivo antonio=new Directivo();
		antonio.setSueldo(5000);
		
		ArrayList<Empleado> empresa=new ArrayList<>();
		empresa.add(pepe);
		empresa.add(ana);
		empresa.add(antonio);
		int total=0;
		for(Empleado e:empresa) {
			total+=e.sueldoNeto();
			System.out.println(e.sueldoNeto());
		}
		System.out.println(total);
		
	}

Publicado por

Juan Pablo Fuentes

Formador de programación y bases de datos