A Classe é uma especificação de como construir Objetos da mesma Classe . É um tipo de planta ou protótipo a partir do qual os Objetos individuais são criados. Podemos dizer que uma Classe é um template que descreve os tipos de estado e comportamento que os Objetos de seu tipo suportam.
Em termos de Programação Orientada a Objetos (OOP), podemos dizer que um carro Toyota é uma instância da Classe de Objetos conhecida como Carro. Uma Classe é como a planta de um Carro. Usando este plano, você pode construir quantos Carros quiser. Cada carro que você constrói é um Objeto da Classe de Carros. Cada Carro também tem um número, é claro. Se você quiser dizer a alguém qual é o seu carro, você dá a alguém o número para identificá-lo. Este número é chamado de referência do Objeto .
Uma Interface fornece um contrato especificando como criar um Objeto, sem se preocupar com as especificidades de como eles fazem as coisas. Uma Interface é um tipo de referência e inclui apenas membros abstratos como Eventos, Métodos, Propriedades, etc. e não tem implementações para nenhum de seus membros.
Quando uma Classe implementa uma Interface é forçada pelo compilador a escrever os métodos e Propriedades que a Interface definiu. Ou seja, se você implementar uma Interface na sua Classe você tem que declarar todos os Eventos, Métodos e Propriedades da Interface na sua Classe. Uma Interface pode ter apenas métodos abstratos e Constantes , que são sempre implicitamente públicos, estáticos e finais.
A Classe tem tanto definição como uma implementação enquanto que a Interface tem apenas uma definição.
A Classe pode ser instanciada mas uma Interface não pode ser instanciada Você pode criar uma instância de um Objeto que implemente a Interface.
A Classe é uma entidade de corpo inteiro com membros, métodos junto com sua definição e implementação. Uma Interface é apenas um conjunto de definições que você deve implementar na sua Classe herdando essa Interface.