Soluciones ejercicio 1
Inmueble.java
package herencia;
import java.util.Objects;
public abstract sealed class Inmueble permits Local, InmuebleVivienda {
protected int identificadorInmobiliario;
protected String direccion;
protected double precioVenta;
protected double metrosCuadrados;
public Inmueble() { }
public Inmueble(int identificadorInmobiliario, String direccion, double precioVenta, double metrosCuadrados) {
this.identificadorInmobiliario = identificadorInmobiliario;
this.direccion = direccion;
this.precioVenta = precioVenta;
this.metrosCuadrados = metrosCuadrados;
}
public int getIdentificadorInmobiliario() {
return identificadorInmobiliario;
}
public String getDireccion() {
return direccion;
}
public double getPrecioVenta() {
return precioVenta;
}
public double getMetrosCuadrados() {
return metrosCuadrados;
}
public void setIdentificadorInmobiliario(int identificadorInmobiliario) {
this.identificadorInmobiliario = identificadorInmobiliario;
}
public void setDireccion(String direccion) {
this.direccion = direccion;
}
public void setPrecioVenta(double precioVenta) {
this.precioVenta = precioVenta;
}
public void setMetrosCuadrados(double metrosCuadrados) {
this.metrosCuadrados = metrosCuadrados;
}
@Override
public int hashCode() {
return Objects.hash(direccion, identificadorInmobiliario, metrosCuadrados, precioVenta);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Inmueble other = (Inmueble) obj;
return Objects.equals(direccion, other.direccion)
&& identificadorInmobiliario == other.identificadorInmobiliario
&& Double.doubleToLongBits(metrosCuadrados) == Double.doubleToLongBits(other.metrosCuadrados)
&& Double.doubleToLongBits(precioVenta) == Double.doubleToLongBits(other.precioVenta);
}
@Override
public String toString() {
return "Inmueble [identificadorInmobiliario=" + identificadorInmobiliario + ", direccion=" + direccion
+ ", precioVenta=" + precioVenta + ", metrosCuadrados=" + metrosCuadrados + "]";
}
}
Local.java
package herencia;
import java.util.Objects;
public final class Local extends Inmueble {
private boolean tieneSalidaHumos;
public Local() { }
public Local(int identificadorInmobiliario, String direccion, double precioVenta, double metrosCuadrados,
boolean tieneSalidaHumos) {
super(identificadorInmobiliario, direccion, precioVenta, metrosCuadrados);
this.tieneSalidaHumos = tieneSalidaHumos;
}
public boolean isTieneSalidaHumos() {
return tieneSalidaHumos;
}
public void setTieneSalidaHumos(boolean tieneSalidaHumos) {
this.tieneSalidaHumos = tieneSalidaHumos;
}
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + Objects.hash(tieneSalidaHumos);
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!super.equals(obj))
return false;
if (getClass() != obj.getClass())
return false;
Local other = (Local) obj;
return tieneSalidaHumos == other.tieneSalidaHumos;
}
@Override
public String toString() {
return "Local [tieneSalidaHumos=" + tieneSalidaHumos + ", identificadorInmobiliario="
+ identificadorInmobiliario + ", direccion=" + direccion + ", precioVenta=" + precioVenta
+ ", metrosCuadrados=" + metrosCuadrados + "]";
}
}
InmuebleVivienda.java
package herencia;
import java.util.Arrays;
import java.util.Objects;
public sealed abstract class InmuebleVivienda extends Inmueble permits Casa, Apartamento {
private static final int MIN_SIZE_HABITACION = 3;
protected Habitacion[] habitaciones;
protected int numHabitaciones;
protected int numBanios;
public InmuebleVivienda() {
super();
habitaciones = new Habitacion[MIN_SIZE_HABITACION];
numHabitaciones = 0;
}
public InmuebleVivienda(int identificadorInmobiliario, String direccion, double precioVenta, double metrosCuadrados,
Habitacion[] habitaciones, int numHabitaciones, int numBanios) {
super(identificadorInmobiliario, direccion, precioVenta, metrosCuadrados);
// clonamos el array para obtener una copia limpia
this.habitaciones = habitaciones.clone();
this.numHabitaciones = habitaciones.length;
this.numBanios = numBanios;
}
public Habitacion[] getHabitaciones() {
// Devolvemos una copia y evitamos
// que se pueda modificar desde fuera
// de la clase
return habitaciones.clone();
}
public void addHabitacion(Habitacion h) {
if (habitaciones.length == numHabitaciones) {
habitaciones = Arrays.copyOf(habitaciones, habitaciones.length+1);
}
habitaciones[numHabitaciones++] = h;
}
public void removeHabitacion(int index) {
if (index > 0 && index < numHabitaciones) {
habitaciones[index] = null;
for(int i = index+1; i < numHabitaciones-1; i++) {
habitaciones[i] = habitaciones[i+1];
}
numHabitaciones--;
}
}
public int getNumHabitaciones() {
return numHabitaciones;
}
public int getNumBanios() {
return numBanios;
}
public void setNumHabitaciones(int numHabitaciones) {
this.numHabitaciones = numHabitaciones;
}
public void setNumBanios(int numBanios) {
this.numBanios = numBanios;
}
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + Arrays.hashCode(habitaciones);
result = prime * result + Objects.hash(numBanios, numHabitaciones);
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!super.equals(obj))
return false;
if (getClass() != obj.getClass())
return false;
InmuebleVivienda other = (InmuebleVivienda) obj;
return Arrays.equals(habitaciones, other.habitaciones) && numBanios == other.numBanios
&& numHabitaciones == other.numHabitaciones;
}
@Override
public String toString() {
return "InmuebleVivienda [habitaciones=" + Arrays.toString(habitaciones) + ", numHabitaciones="
+ numHabitaciones + ", numBanios=" + numBanios + ", identificadorInmobiliario="
+ identificadorInmobiliario + ", direccion=" + direccion + ", precioVenta=" + precioVenta
+ ", metrosCuadrados=" + metrosCuadrados + "]";
}
}
Casa.java
package herencia;
import java.util.Arrays;
import java.util.Objects;
public final class Casa extends InmuebleVivienda {
private int numPisos;
public Casa() {
super();
}
public Casa(int identificadorInmobiliario, String direccion, double precioVenta, double metrosCuadrados,
Habitacion[] habitaciones, int numHabitaciones, int numBanios, int numPisos) {
super(identificadorInmobiliario, direccion, precioVenta, metrosCuadrados, habitaciones, numHabitaciones,
numBanios);
this.numPisos = numPisos;
}
public int getNumPisos() {
return numPisos;
}
public void setNumPisos(int numPisos) {
this.numPisos = numPisos;
}
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + Objects.hash(numPisos);
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!super.equals(obj))
return false;
if (getClass() != obj.getClass())
return false;
Casa other = (Casa) obj;
return numPisos == other.numPisos;
}
@Override
public String toString() {
return "Casa [numPisos=" + numPisos + ", habitaciones=" + Arrays.toString(habitaciones) + ", numHabitaciones="
+ numHabitaciones + ", numBanios=" + numBanios + ", identificadorInmobiliario="
+ identificadorInmobiliario + ", direccion=" + direccion + ", precioVenta=" + precioVenta
+ ", metrosCuadrados=" + metrosCuadrados + "]";
}
}
Habitacion.java
package herencia;
import java.util.Objects;
public class Habitacion {
private String uso;
private double metrosCuadrados;
private int numVentanas;
public Habitacion() {}
public Habitacion(String uso, double metrosCuadrados, int numVentanas) {
super();
this.uso = uso;
this.metrosCuadrados = metrosCuadrados;
this.numVentanas = numVentanas;
}
public String getUso() {
return uso;
}
public double getMetrosCuadrados() {
return metrosCuadrados;
}
public int getNumVentanas() {
return numVentanas;
}
public void setUso(String uso) {
this.uso = uso;
}
public void setMetrosCuadrados(double metrosCuadrados) {
this.metrosCuadrados = metrosCuadrados;
}
public void setNumVentanas(int numVentanas) {
this.numVentanas = numVentanas;
}
@Override
public int hashCode() {
return Objects.hash(metrosCuadrados, numVentanas, uso);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Habitacion other = (Habitacion) obj;
return Double.doubleToLongBits(metrosCuadrados) == Double.doubleToLongBits(other.metrosCuadrados)
&& numVentanas == other.numVentanas && Objects.equals(uso, other.uso);
}
@Override
public String toString() {
return "Habitacion [uso=" + uso + ", metrosCuadrados=" + metrosCuadrados + ", numVentanas=" + numVentanas + "]";
}
}
Apartamento.java
package herencia;
public final class Apartamento extends InmuebleVivienda {
public Apartamento() {
super();
}
public Apartamento(int identificadorInmobiliario, String direccion, double precioVenta, double metrosCuadrados,
Habitacion[] habitaciones, int numHabitaciones, int numBanios) {
super(identificadorInmobiliario, direccion, precioVenta, metrosCuadrados, habitaciones, numHabitaciones, numBanios);
}
}
App.java
package herencia;
public class App {
public static void main(String[] args) {
Local l1 = new Local(1, "C/ Rue del Percebe nº 1", 250000.0, 110, true);
System.out.println(l1);
Casa c1 = new Casa();
c1.setIdentificadorInmobiliario(2);
c1.setDireccion("C/ Rue del Percebe 2");
c1.setPrecioVenta(150000);
c1.setMetrosCuadrados(70);
c1.setNumBanios(2);
c1.addHabitacion(new Habitacion("Dormitorio", 13, 1));
c1.addHabitacion(new Habitacion("Dormitorio", 16, 1));
c1.addHabitacion(new Habitacion("Salón", 18, 2));
c1.setNumPisos(1);
System.out.println(c1);
}
}
Soluciones ejercicio 2
Inmueble.java
package herencia;
import java.util.Objects;
public abstract sealed class Inmueble permits Local, InmuebleVivienda {
protected int identificadorInmobiliario;
protected String direccion;
protected double precioBase;
protected double metrosCuadrados;
public Inmueble() { }
public Inmueble(int identificadorInmobiliario, String direccion, double precioBase, double metrosCuadrados) {
this.identificadorInmobiliario = identificadorInmobiliario;
this.direccion = direccion;
this.precioBase = precioBase;
this.metrosCuadrados = metrosCuadrados;
}
public int getIdentificadorInmobiliario() {
return identificadorInmobiliario;
}
public String getDireccion() {
return direccion;
}
public double getPrecioBase() {
return precioBase;
}
public double getMetrosCuadrados() {
return metrosCuadrados;
}
public void setIdentificadorInmobiliario(int identificadorInmobiliario) {
this.identificadorInmobiliario = identificadorInmobiliario;
}
public void setDireccion(String direccion) {
this.direccion = direccion;
}
public void setPrecioBase(double precioBase) {
this.precioBase = precioBase;
}
public void setMetrosCuadrados(double metrosCuadrados) {
this.metrosCuadrados = metrosCuadrados;
}
public abstract double precioVentaFinal();
@Override
public int hashCode() {
return Objects.hash(direccion, identificadorInmobiliario, metrosCuadrados, precioBase);
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Inmueble other = (Inmueble) obj;
return Objects.equals(direccion, other.direccion)
&& identificadorInmobiliario == other.identificadorInmobiliario
&& Double.doubleToLongBits(metrosCuadrados) == Double.doubleToLongBits(other.metrosCuadrados)
&& Double.doubleToLongBits(precioBase) == Double.doubleToLongBits(other.precioBase);
}
@Override
public String toString() {
return "Inmueble [identificadorInmobiliario=" + identificadorInmobiliario + ", direccion=" + direccion
+ ", precioBase=" + precioBase + ", metrosCuadrados=" + metrosCuadrados + "]";
}
}
Local.java
package herencia;
import java.util.Objects;
public final class Local extends Inmueble {
private boolean tieneSalidaHumos;
private double porcentajePlusvalia;
public Local() { }
public Local(int identificadorInmobiliario, String direccion, double precioBase, double metrosCuadrados,
boolean tieneSalidaHumos, double porcentajePlusvalia) {
super(identificadorInmobiliario, direccion, precioBase, metrosCuadrados);
this.tieneSalidaHumos = tieneSalidaHumos;
this.porcentajePlusvalia = porcentajePlusvalia;
}
public boolean isTieneSalidaHumos() {
return tieneSalidaHumos;
}
public void setTieneSalidaHumos(boolean tieneSalidaHumos) {
this.tieneSalidaHumos = tieneSalidaHumos;
}
public double getPorcentajePlusvalia() {
return porcentajePlusvalia;
}
public void setPorcentajePlusvalia(double porcentajePlusvalia) {
this.porcentajePlusvalia = porcentajePlusvalia;
}
@Override
public double precioVentaFinal() {
// El % está expresado entre 0 y 1
return this.precioBase * (1 + this.porcentajePlusvalia);
}
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + Objects.hash(tieneSalidaHumos);
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!super.equals(obj))
return false;
if (getClass() != obj.getClass())
return false;
Local other = (Local) obj;
return tieneSalidaHumos == other.tieneSalidaHumos;
}
@Override
public String toString() {
return "Local [tieneSalidaHumos=" + tieneSalidaHumos + ", identificadorInmobiliario="
+ identificadorInmobiliario + ", direccion=" + direccion + ", precioVenta=" + precioBase
+ ", metrosCuadrados=" + metrosCuadrados + "]";
}
}
InmuebleVivienda.java
package herencia;
import java.util.Arrays;
import java.util.Objects;
public sealed abstract class InmuebleVivienda extends Inmueble permits Casa, Apartamento {
private static final int MIN_SIZE_HABITACION = 3;
protected Habitacion[] habitaciones;
protected int numHabitaciones;
protected int numBanios;
public InmuebleVivienda() {
super();
habitaciones = new Habitacion[MIN_SIZE_HABITACION];
numHabitaciones = 0;
}
public InmuebleVivienda(int identificadorInmobiliario, String direccion, double precioVenta, double metrosCuadrados,
Habitacion[] habitaciones, int numHabitaciones, int numBanios) {
super(identificadorInmobiliario, direccion, precioVenta, metrosCuadrados);
// clonamos el array para obtener una copia limpia
this.habitaciones = habitaciones.clone();
this.numHabitaciones = habitaciones.length;
this.numBanios = numBanios;
}
public Habitacion[] getHabitaciones() {
// Devolvemos una copia y evitamos
// que se pueda modificar desde fuera
// de la clase
return habitaciones.clone();
}
public void addHabitacion(Habitacion h) {
if (habitaciones.length == numHabitaciones) {
habitaciones = Arrays.copyOf(habitaciones, habitaciones.length+1);
}
habitaciones[numHabitaciones++] = h;
}
public void removeHabitacion(int index) {
if (index > 0 && index < numHabitaciones) {
habitaciones[index] = null;
for(int i = index+1; i < numHabitaciones-1; i++) {
habitaciones[i] = habitaciones[i+1];
}
numHabitaciones--;
}
}
public int getNumHabitaciones() {
return numHabitaciones;
}
public int getNumBanios() {
return numBanios;
}
public void setNumHabitaciones(int numHabitaciones) {
this.numHabitaciones = numHabitaciones;
}
public void setNumBanios(int numBanios) {
this.numBanios = numBanios;
}
@Override
public double precioVentaFinal() {
return this.precioBase * 1.21;
}
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + Arrays.hashCode(habitaciones);
result = prime * result + Objects.hash(numBanios, numHabitaciones);
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (!super.equals(obj))
return false;
if (getClass() != obj.getClass())
return false;
InmuebleVivienda other = (InmuebleVivienda) obj;
return Arrays.equals(habitaciones, other.habitaciones) && numBanios == other.numBanios
&& numHabitaciones == other.numHabitaciones;
}
@Override
public String toString() {
return "InmuebleVivienda [habitaciones=" + Arrays.toString(habitaciones) + ", numHabitaciones="
+ numHabitaciones + ", numBanios=" + numBanios + ", identificadorInmobiliario="
+ identificadorInmobiliario + ", direccion=" + direccion + ", precioBase=" + precioBase
+ ", metrosCuadrados=" + metrosCuadrados + "]";
}
}
App.java
package herencia;
public class App {
public static void main(String[] args) {
Local l1 = new Local(1, "C/ Rue del Percebe nº 1", 250000.0, 110, true, 0.07);
Casa c1 = new Casa();
c1.setIdentificadorInmobiliario(2);
c1.setDireccion("C/ Rue del Percebe 2");
c1.setPrecioBase(150000);
c1.setMetrosCuadrados(70);
c1.setNumBanios(2);
c1.addHabitacion(new Habitacion("Dormitorio", 13, 1));
c1.addHabitacion(new Habitacion("Dormitorio", 16, 1));
c1.addHabitacion(new Habitacion("Salón", 18, 2));
c1.setNumPisos(1);
Apartamento ap1 = new Apartamento();
ap1.setIdentificadorInmobiliario(3);
ap1.setDireccion("C/ Rue del Percebe 3");
ap1.setMetrosCuadrados(50);
ap1.setPrecioBase(120000);
ap1.setNumBanios(1);
ap1.addHabitacion(new Habitacion("Dormitorio", 14, 1));
ap1.addHabitacion(new Habitacion("Salón", 20, 2));
imprimirInformacion(l1);
imprimirInformacion(c1);
imprimirInformacion(ap1);
}
public static void imprimirInformacion(Inmueble i) {
if (i instanceof Local l) {
System.out.println("LOCAL COMERCIAL");
imprimirInformacionComun(i);
System.out.println("EL LOCAL %s TIENE SALIDA DE HUMOS"
.formatted(l.isTieneSalidaHumos() ? "SÍ" : "NO"));
} else if (i instanceof Casa c) {
System.out.println("CASA");
imprimirInformacionComun(i);
System.out.println("Nº HABITACIONES: " + c.getNumHabitaciones());
System.out.println("Nº PLANTAS: " + c.getNumPisos());
} else if (i instanceof Apartamento a) {
System.out.println("APARTAMENTO");
imprimirInformacionComun(i);
System.out.println("Nº HABITACIONES: " + a.getNumHabitaciones());
}
System.out.println();
}
private static void imprimirInformacionComun(Inmueble i) {
System.out.println("DIRECCIÓN: " + i.getDireccion());
System.out.println("TAMAÑO: %.2f m2".formatted(i.getMetrosCuadrados()));
System.out.println("PRECIO FINAL: %.2f".formatted(i.precioVentaFinal()));
}
}
Soluciones ejercicio 3
Producto.java
package herencia;
public class Producto {
protected String nombre;
protected double precio;
public Producto(String nombre, double precio) {
this.nombre = nombre;
this.precio = precio;
}
public String getNombre() {
return nombre;
}
public double getPrecio() {
return precio;
}
}
TelefonoMovil.java
package herencia;
public class TelefonoMovil extends Producto {
private double tamanoPantalla;
private int cantidadRam;
private int cantidadAlmacenamiento;
public TelefonoMovil(String nombre, double precio, double tamanoPantalla, int cantidadRam, int cantidadAlmacenamiento) {
super(nombre, precio);
this.tamanoPantalla = tamanoPantalla;
this.cantidadRam = cantidadRam;
this.cantidadAlmacenamiento = cantidadAlmacenamiento;
}
public double getTamanoPantalla() {
return tamanoPantalla;
}
public int getCantidadRam() {
return cantidadRam;
}
public int getCantidadAlmacenamiento() {
return cantidadAlmacenamiento;
}
}
Accesorio.java
package herencia;
public abstract class Accesorio extends Producto {
protected TelefonoMovil[] telefonosCompatibles;
private int numTelefonosCompatibles;
public Accesorio(String nombre, double precio) {
super(nombre, precio);
telefonosCompatibles = new TelefonoMovil[10]; // Inicialmente se reserva espacio para 10 teléfonos
numTelefonosCompatibles = 0;
}
public void agregarTelefonoCompatible(TelefonoMovil telefono) {
if (numTelefonosCompatibles < telefonosCompatibles.length) {
telefonosCompatibles[numTelefonosCompatibles] = telefono;
numTelefonosCompatibles++;
} else {
System.out.println("No se pueden agregar más teléfonos compatibles");
}
}
public TelefonoMovil[] getTelefonosCompatibles() {
return telefonosCompatibles.clone();
}
public int getNumTelefonosCompatibles() {
return numTelefonosCompatibles;
}
}
Carcasa.java
package herencia;
public class Carcasa extends Accesorio {
public Carcasa(String nombre, double precio) {
super(nombre, precio);
}
}
Cargador.java
package herencia;
public class Cargador extends Accesorio{
public Cargador(String nombre, double precio) {
super(nombre, precio);
}
}
.java
package herencia;
public class App {
public static void main(String[] args) {
// Crear un teléfono móvil
TelefonoMovil telefono = new TelefonoMovil("iPhone 12", 999.99, 6.1, 4, 128);
// Crear una carcasa compatible con el teléfono
Carcasa carcasa = new Carcasa("Carcasa transparente", 19.99);
carcasa.agregarTelefonoCompatible(telefono);
// Crear un cargador compatible con el teléfono
Cargador cargador = new Cargador("Cargador rápido", 29.99);
cargador.agregarTelefonoCompatible(telefono);
// Imprimir información del teléfono
System.out.println("Teléfono: " + telefono.getNombre());
System.out.println("Precio: %.2f€".formatted(telefono.getPrecio()));
System.out.println("Tamaño de pantalla: " + telefono.getTamanoPantalla() + " pulgadas");
System.out.println("RAM: " + telefono.getCantidadRam() + " GB");
System.out.println("Almacenamiento: " + telefono.getCantidadAlmacenamiento() + " GB");
// Imprimir información de la carcasa
System.out.println("\nCarcasa: " + carcasa.getNombre());
System.out.println("Precio: %.2f€".formatted(carcasa.getPrecio()));
System.out.println("Telefonos compatibles con la carcasa:");
TelefonoMovil[] telefonosCarcasa = carcasa.getTelefonosCompatibles();
for (int i = 0; i < carcasa.getNumTelefonosCompatibles(); i++) {
System.out.println("- " + telefonosCarcasa[i].getNombre());
}
// Imprimir información del cargador
System.out.println("\nCargador: " + cargador.getNombre());
System.out.println("Precio: %.2f€".formatted(cargador.getPrecio()));
System.out.println("Telefonos compatibles con el cargador:");
TelefonoMovil[] telefonosCargador = cargador.getTelefonosCompatibles();
for (int i = 0; i < cargador.getNumTelefonosCompatibles(); i++) {
System.out.println("- " + telefonosCargador[i].getNombre());
}
}
}
Soluciones ejercicio 4
App.java
public class App {
public static void main(String[] args) {
// Crear un teléfono móvil
TelefonoMovil telefono = new TelefonoMovil("iPhone 12", 999.99, 6.1, 4, 128);
// Crear una carcasa compatible con el teléfono
Carcasa carcasa = new Carcasa("Carcasa transparente", 19.99);
carcasa.agregarTelefonoCompatible(telefono);
// Crear un cargador compatible con el teléfono
Cargador cargador = new Cargador("Cargador rápido", 29.99);
cargador.agregarTelefonoCompatible(telefono);
// Imprimir información de los productos
imprimirInformacion(telefono);
imprimirInformacion(carcasa);
imprimirInformacion(cargador);
}
public static void imprimirInformacion(Producto producto) {
System.out.println("Producto: " + producto.getNombre());
System.out.println("Precio: $" + producto.getPrecio());
if (producto instanceof TelefonoMovil telefono) {
System.out.println("Tamaño de pantalla: " + telefono.getTamanoPantalla() + " pulgadas");
System.out.println("RAM: " + telefono.getCantidadRam() + " GB");
System.out.println("Almacenamiento: " + telefono.getCantidadAlmacenamiento() + " GB");
} else if (producto instanceof Accesorio accesorio) {
System.out.println("Tipo de accesorio: " + accesorio.getClass().getSimpleName());
if (accesorio instanceof Carcasa carcasa) {
System.out.println("Telefonos compatibles con la carcasa:");
for (TelefonoMovil telefonoCompat : carcasa.getTelefonosCompatibles()) {
System.out.println("- " + telefonoCompat.getNombre());
}
} else if (accesorio instanceof Cargador cargador) {
System.out.println("Telefonos compatibles con el cargador:");
for (TelefonoMovil telefonoCompat : cargador.getTelefonosCompatibles()) {
System.out.println("- " + telefonoCompat.getNombre());
}
}
}
System.out.println();
}
}