Write a complete program with an interface Printable, an abstract class Shape, a class Square that extends Shape and implements Printable, and a class Tag that is not a Shape at all but is still Printable.
Read a square side and a tag text, put both objects in one Printable[], and print their labels joined by a single space.
For the input 3 hi:
[Square] <hi>
The two objects share no superclass — only the interface — and one loop still handles both.