import java.util.ArrayDeque; public class Ikimono { String name = ""; void printName(){ System.out.println(name); } void morauKibi(Kibidango dango){ System.out.println(name + "が "+dango.toString()+" をもらった"); } } class Momotaro extends Ikimono { ArrayDeque<Kibidango> kibiBukuro; Momotaro(){ name = "momotarou"; } void morauFukuro(ArrayDeque<Kibidango> f){ kibiBukuro = f; } void watasuKibi(Ikimono dareka){ Kibidango oneKibi = kibiBukuro.pop(); dareka.morauKibi(oneKibi); System.out.println("nokori "+kibiBukuro.size()); } } class Ojiisan extends Ikimono { Ojiisan(){ name = "ojiiisan"; } } class Obaasan extends Ikimono { Obaasan(){ name = "obaasan"; } ArrayDeque<Kibidango> giveKibidangos(){ ArrayDeque<Kibidango> fukuro = new ArrayDeque<Kibidango>(); fukuro.add(new Kibidango()); fukuro.add(new Kibidango()); fukuro.add(new Kibidango()); return fukuro; } } class Inu extends Ikimono { Inu(){ name = "inu"; } } class Saru extends Ikimono { Saru(){ name = "saru"; } } class Tori extends Ikimono { Tori(){ name = "tori"; } }