📅  最后修改于: 2023-12-03 14:59:19.758000             🧑  作者: Mango
En Java, es posible agregar objetos de diferentes clases a una misma lista, siempre y cuando todas las clases sean subclases de una clase común o implementen una interfaz común. Esto se debe al polimorfismo, que permite tratar a objetos de diferentes clases de forma genérica.
Para ilustrar esto, vamos a crear una lista que contenga diferentes tipos de animales. Supongamos que tenemos las siguientes clases: Animal
, Perro
y Gato
. La clase Animal
es una clase base, mientras que Perro
y Gato
son subclases de Animal
.
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args) {
// Creamos una lista de animales
List<Animal> listaAnimales = new ArrayList<>();
// Creamos instancias de Perro y Gato
Perro perro = new Perro("Bobby");
Gato gato = new Gato("Garfield");
// Añadimos los animales a la lista
listaAnimales.add(perro);
listaAnimales.add(gato);
// Recorremos la lista e imprimimos los nombres de los animales
for (Animal animal : listaAnimales) {
System.out.println(animal.getNombre());
}
}
}
class Animal {
private String nombre;
public Animal(String nombre) {
this.nombre = nombre;
}
public String getNombre() {
return nombre;
}
}
class Perro extends Animal {
public Perro(String nombre) {
super(nombre);
}
}
class Gato extends Animal {
public Gato(String nombre) {
super(nombre);
}
}
En este ejemplo, creamos una lista llamada listaAnimales
de tipo List<Animal>
, que permitirá almacenar objetos de la clase Animal
y sus subclases. Luego, creamos instancias de Perro
y Gato
y las agregamos a la lista utilizando el método add()
. Finalmente, recorremos la lista y, para cada animal, imprimimos su nombre utilizando el método getNombre()
.
La salida del programa será:
Bobby
Garfield
Como se puede observar, podemos almacenar objetos de diferentes clases en una misma lista y realizar operaciones genéricas sobre ellos, sin necesidad de preocuparnos por la clase concreta de cada objeto. Esto es posible gracias al polimorfismo y a la herencia en Java.