Could anybody help me with the following questions?

1- What information is provided by a Java interface?

2- What does a class need to provide in order to implement a Java interface?

3- What is the advantage if any of declaring variables to be of an interface rather than class type?