In addition, they can have members specific to Solidity, Events , to interact with them.

Contracts bear a striking similitude to the concept of classes in other languages (such as Java). They can have both state - attributes, and behavior - methods. They can also be abstract.

A pure function is a concept inherited from Function Programming. In FP, its return value depends solely on its input parameter(s) and has no side-effects (such as logging, writing to a context, etc.).

In Solidity, the definition is as follows:

Functions can be declared pure in which case they promise not to read from or modify the state. — Solidity documentation

https://solidity.readthedocs.io/en/develop/contracts.html#pure-functions