„W dzisiejszym poście zajmiemy się pojęciem interface’ów. O Interface’ach wspominałem już przy okazji postu o dziedziczeniu. Dzisiaj rozwińmy ten temat trochę bardziej.

Czym jest interface?

 

interfejsy w C# swoją konstrukcją mogą przypominać klasy, są jednakże bardzo mocno z klasami się połączone.

Interfejs to nic innego jak wzór, który wszystkie klasy implementujące muszą przestrzegać. Interfejs określa ’co’ powinno być zrobione a klasa dziedzicząca ’jak’ powinno to być zrobione.

Wnętrze interfejsu zawiera deklaracje metod. Są to same deklaracje tych metod, bez implementacji ponieważ interfejs ma nam posłużyć tylko do zakomunikowania z jakiej metody możemy skorzystać, nie określa jednak co dalej ona będzie robić. Celowo, nie zostało użyte słowo kluczowe mówiące o widoczności metody. A dlaczego? Dlatego że „by default” wszystkie metody w interfejsie są zaimplementowane jako publiczne. Metoda zaimplementowana jako private nie miałaby większego sensu, gdyby byłaby prywatna i niedostępna poza konkretną klasą.

 

W nazwie interfejsu przed słowem DataTransactions dodałem literę “I”. Nieprzypadkowo też się tam znalazła. Otóż konwencja nazewnicza języka C# sugeruje żeby nazwy interfejsów właśnie od tej litery się zaczynały i jedną z najważniejszych zasad dobrych praktyk jest trzymanie się tego.

Składnia:

Deklarowanie interfejsów

Ok, to teraz jak używać tych interfejsów? Jak utworzyć z ich pomocą jakieś obiekty? Interfejsy używamy na dwa sposoby, które są ze sobą ściśle związane.

 

Po pierwsze interfejs może być implementowany przez klasę. Korzystając z pokazanego przed chwilą interfejsu wygląda to w ten sposób:

 

Aby zadeklarować interface w naszym kodzie, skorzystamy z pomocy słowa kluczowego interface. Deklaracja interface do złudzenia jest podobna do deklaracji klasy. należy pamiętać że Interfejsy by default są publiczne.

Przykład użycia powyższego Interface-u:

a o to wynik działania programu:

 

To chyba najważniejsze informacje o intefaceach.
Sugestie, pytania? piszcie i komentujcie.

 

Cały kod dostępny oczywiście na GitHubie.

Post Author: Csharpowe Zmagania

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

This site uses Akismet to reduce spam. Learn how your comment data is processed.