Description: In nonobject-oriented programming languages, the type of each element must be known at compile time, which results in very inflexible code. Object-oriented languages relax this constraint--only the kind of element needs to be known. Java takes this a step further. Interfaces allow Java code to refer to behavior of an object regardless of the kind of object.