By making Structure an interface, we get the following benefits:
The technical term for this is polymorphism, which means that a given object can be thought of in multiple ways. In this case a mobile can be thought of as a Mobile, a Structure, or an Object, depending on the need of the programmer. When it comes to writing something like a getWeight() method, thinking of it as a Structure turns out to be really helpful.
public interface Structure { public double getWeight(); public boolean isBalanced(); }