Frames are a knowledge representation technique. They resemble an extended form of record (as in Pascal and Modula-2) or struct (using C terminology) or class (in Java) in that they have a number of slots which are like fields in a record or struct, or variable in a class. Unlike a record/struct/class, it is possible to add slots to a frame dynamically (i.e. while the program is executing) and the contents of the slot need not be a simple value. If there is no value present in a slot, the frame system may use a default for frames of that type, or there may be a demon present to help compute a value for the slot. Documentation for frames as implemented in iProlog is available at http://www.cse.unsw.edu.au/~claude/teaching/AI/notes/prolog/Frames/Frames.html. (This link is outside my web space and may break.)
Demons in frames differ from methods in a Java class in that a demon is associated with a particular slot, whereas a Java method is not so linked to a particular variable.