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

[wersja nieprzejrzana][wersja nieprzejrzana]
Usunięta treść Dodana treść
drobne redakcyjne
drobne redakcyjne
Linia 4:
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 językach 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 [[Dziedziczenie (programowanie)|dziedziczą]] [[Właściwość (informatyka)|własności]] - na przykład [[Metoda (programowanie obiektowe)|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* 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''.