import java.util.ArrayList; abstract class Printable { public abstract String show(); public void add(Printable p) { throw new UnsupportedOperationException(); } } class Paragraph extends Printable { public String show() { return "[paragraph]"; } } class Image extends Printable { public String show() { return "[image]"; } } class Album extends Printable { public ArrayList<Printable> _printables = new ArrayList<Printable>(); public void add(Printable p) { _printables.add(p); } public String show() { String s = "[\n"; for (Printable p: _printables) s += p.show(); s += "\n]"; return s; } } public class App { public static void main(String args[]) { Album album = new Album(); album.add(new Paragraph()); album.add(new Image()); System.out.println(album.show()); } }