#### §6.2.(a) Interfaces for role encapsulation

A set of pre-defined types exist that do not extend `java.lang.Object` and have no features except the operators `==` and `!=`.

##### Note:

The JLS defines that each interface declares all methods defined in `java.lang.Object` (JLS §9.2) and also each object referenced by an interface type can be widened to `java.lang.Object`. Compilers commonly implement this by declaring `java.lang.Object` the super-type of all interfaces. Such implementation has no visible difference with respect to the more complex definition in the JLS.

These predefined types are

`org.objectteams.IConfined`
  regular interface
`org.objectteams.ITeam.IConfined`
  role interface
`org.objectteams.Team.Confined`
  role class

These types provide no new functionality but inheriting from these types influences the semantics with respect to encapsulation. The purpose and usage of these types is described in §7.