Buenas, os adjunto otro ejercicio, el CU00697B del tutorial práctico de programación en Java para principiantes.
import java.util.Iterator;
import java.util.ArrayList;
public class Test {
public static void main (String [] args) {
Polideportivo poli1 = new Polideportivo("descubierta", 1000, "europa");
Polideportivo poli2 = new Polideportivo("cubierto", 500, "tierno galvan");
Polideportivo poli3 = new Polideportivo("cubierto", 450, "san pedro");
EdificioOficinas edi1 = new EdificioOficinas(2500, 100);
EdificioOficinas edi2 = new EdificioOficinas(2000, 95);
ArrayList<Edificio> listaEdificios = new ArrayList<Edificio>();
listaEdificios.add(poli1);
listaEdificios.add(poli2);
listaEdificios.add(poli3);
listaEdificios.add(edi1);
listaEdificios.add(edi2);
Iterator<Edificio> edificio = listaEdificios.iterator();
Edificio tmpEdificio;
while (edificio.hasNext()) {
tmpEdificio = edificio.next();
tmpEdificio.mostrar();
}
}
}
public interface InstalacionDeportiva
{
String getTipoInstalacion();
}
public interface Edificio
{
double getSuperficieEdificio();
void mostrar();
}
public class Polideportivo implements InstalacionDeportiva, Edificio
{
String nombreEdificio;
double superficieEdificio;
String tipoInstalacion;
public Polideportivo (String tipoInstalacion, double superficieEdificio, String nombreEdificio) {
this.tipoInstalacion = tipoInstalacion;
this.superficieEdificio = superficieEdificio;
this.nombreEdificio = nombreEdificio;
}
public void tipoInstalacion (String tipoInstalacion) {
this.tipoInstalacion = tipoInstalacion;
}
public void nombreEdificio ( String nombreEdificio) {
this.nombreEdificio = nombreEdificio;
}
public void superficieEdificio(double superficieEdificio) {
this.superficieEdificio = superficieEdificio;
}
public String getNombre() {return nombreEdificio;}
public String getTipoInstalacion() {return tipoInstalacion;}
public double getSuperficieEdificio() { return superficieEdificio;}
public void mostrar() {
System.out.println ("El nombre del edificio es " + getNombre() + " es una instalación " + getTipoInstalacion() + " la superficie del edificio es de " + getSuperficieEdificio() + "m2");
}
}
public class EdificioOficinas implements Edificio
{
double superficieEdificio;
int numeroOficinas;
public EdificioOficinas (double superficieEdificio, int numeroOficinas) {
this.superficieEdificio = superficieEdificio;
this.numeroOficinas = numeroOficinas;
}
public void superficieEdificio (double superficieEdificio) {
this.superficieEdificio= superficieEdificio;
}
public void numeroOficinas (int numeroOficinas) {
this.numeroOficinas = numeroOficinas;
}
public double getSuperficieEdificio() {return superficieEdificio;}
public int getNumeroOficinas() {return numeroOficinas;}
public void mostrar() {
System.out.println ("la superficie del edificio es de " + getSuperficieEdificio() +"m2" + " el edificio se compone de " + getNumeroOficinas() + " oficinas");
}
}
En cuanto a la pregunta propuesta, decir que se podría considerar que polideportivo "tiene herencia múltiple" ya que hereda de las 2 interfaces mientras que edificio de oficinas tan solo lo hace de una de ellas.
Sin más, un saludo y agradecer vuestra colaboración de antemano.