Interfejs (programowanie obiektowe): Różnice pomiędzy wersjami

[wersja nieprzejrzana][wersja nieprzejrzana]
Usunięta treść Dodana treść
drobne merytoryczne
drobne redakcyjne
Linia 2:
W [[programowanie obiektowe|programowaniu obiektowym]] '''interfejs''' jest abstrakcyjną reprezentacją [[klasa (programowanie obiektowe)|klasy]]. Interfejs umożliwia korzystanie z danej klasy, niezależnie od faktycznej [[Implementacja (informatyka)|implementacji]]. Interfejs pozwala na [[Hermetyzacja (informatyka)|hermetyzację]] obiektów, utworzonych w oparciu o klasy zawierające definicję (implementację) wspólnego interfejsu. Tak rozumiany interfejs, w ramach programowania obiektowego, określany jest też mianem ''interfejs klasy''.
 
Jeśli w klasie zdefiniowano co najmniej jedną [[metoda wirtualna|metodę wirtualną]] to klasa taka staje się [[klasa abstrakcyjna|klasą abstrakcyjną]] (choć w niektórych jeżykach można określić klasę abstrakcyjną domyślną czyli taką, dla której nie zdefiniowano, w danym momencie, jeszcze żadnej metody wirtualnej). Od klasy abstrakcyjnej nie można utworzyć [[Instancja (programowanie)|instancji]] takiej klasy (choć można utworzyć instancje klas znajdujących się niżej w hierarchii - czyli klas, które dziedziczą własności lub metody po klasie abstrakcyjnej). Podobnie metody wirtualne nie definiują w sobie swojej implementacji (poglądowo mówiąc nie mają w sobie żadnej zawartości) i przez to same jako takie nigdy się nie wykonają. Jeśli w klasie abstrakcyjnej definiowane będą kolejne metody to może dojść do sytuacji, kiedy wszystkie ze zdefiniowanych metod klasy są metodami wirtualnymi - wówczas mamy już do czynienia z '''interfejsem''' (często - zależnie od języka programowania - nie jest to już klasa abstrakcyjna - ta bowiem zawiera definicje także metod niewirtualnych). Wszystkie metody w interfejsie z reguły muszą być publiczne.
 
W języku [[C++]] interfejs może być zdefiniowany jako [[klasa abstrakcyjna]], natomiast w [[Java|Javie]], [[C Sharp|C#]], [[Object Pascal]]u oraz [[PHP]] stosuje się w tym celu specjalną deklarację ze słowem ''interface''.