In this paper we study the interconnection between relationships and roles. We start from the patterns used to introduce relationships in object oriented languages. We show how the role model proposed Java can be used to define roles in an abstract way in objects representing relationships, to specify the interconnections the roles. Abstract roles cannot be instantiated. To ate in a relationship, objects have to extend the abstract roles of the relationship. Only when roles are implemented in the objects offering them, they can be instantiated, thus allowing another object to play those roles.