I know this is a question that has been asked a 100 times over but I would like to provide some of my own definitions to see if I understand an interface correctly.

Questions:

What is an interface?

An interface defines the structure for code design. An interface lays the foundation for your design and is made up of a collection of abstract methods and contains behaviors that a class must implement.

When to use an interface? 

When similar methods of a design are to be reused across a project. This creates the structure of the behavior within a a project.

Why use an interface?

You use an interface in a project to create the foundation much like the construction of a new home. When a new home is built the frame is built, then the walls and doors and so on are added. 

My above answers are what I describe as an interface and would like to know whether I am correct or not? If not, then please explain?

Thanks