void main() {
var animals = [];
animals.add(new Dog("Dog 1"));
animals.add(new Cat("Cat 1"));
animals.add(new Cat("Cat 2"));
animals.add(new Dog("Dog 2"));
for (Animal animal in animals) {
animal.sound();
print("==============================");
}
}
abstract class Animal {
late String name;
Animal() {}
Animal.fromName(String name) {
this.name = name;
}
void sound();
}
class Cat extends Animal {
Cat(String name) : super.fromName(name) {}
void sound() {
print(this.name + " sound: Meo Meo");
}
}
class Dog extends Animal {
Dog(String name) : super.fromName(name) {}
void sound() {
print(this.name + " sound: Gau Gau");
}
}
Dog 1 sound: Gau Gau
==============================
Cat 1 sound: Meo Meo
==============================
Cat 2 sound: Meo Meo
==============================
Dog 2 sound: Gau Gau
==============================