Klasa jest specyfikacją sposobu konstruowania Obiektów z tej samej klasy . Jest to rodzaj wzorca lub prototypu, z którego tworzone są poszczególne Obiekty. Możemy powiedzieć, że klasa jest szablonem, który opisuje rodzaje stanu i zachowania, które obiekty jej typu obsługują.
W terminologii programowania obiektowego (OOP), możemy powiedzieć, że samochód Toyota jest instancją klasy obiektów znanej jako Samochód. Klasa jest jak schemat samochodu. Używając tego wzoru, możesz zbudować tyle samochodów, ile tylko chcesz. Każdy samochód, który zbudujesz, jest obiektem klasy Samochód. Każdy samochód ma też oczywiście swój numer. Jeśli chcesz komuś powiedzieć, który to jest Twój samochód, dajesz mu numer, aby go zidentyfikować. Ten numer jest nazywany referencją obiektu .
Interfejs zapewnia kontrakt określający sposób tworzenia obiektu, nie dbając o specyfikę tego, jak robią rzeczy. Interfejs jest typem odniesienia i zawiera tylko abstrakcyjnych członków, takich jak zdarzenia, metody, właściwości itp. i nie ma implementacji dla żadnego z jego członków.
Kiedy klasa implementuje interfejs, jest zmuszona przez kompilator do napisania metod i właściwości, które zdefiniował interfejs. Oznacza to, że jeśli zaimplementujesz interfejs w swojej klasie, musisz zadeklarować wszystkie zdarzenia, metody i właściwości interfejsu w swojej klasie. Interfejs może mieć tylko metody abstrakcyjne i stałe, które są zawsze niejawnie publiczne, statyczne i ostateczne.
Klasa ma zarówno definicję, jak i implementację, podczas gdy interfejs ma tylko definicję.
Klasa może być instancjonowana, ale interfejs nie może być instancjonowany Możesz utworzyć instancję obiektu, który implementuje interfejs.
Klasa jest pełnoprawną jednostką z członkami, metodami wraz z ich definicją i implementacją. Interfejs to tylko zestaw definicji, które musisz zaimplementować w swojej klasie dziedziczącej po tym interfejsie.