Tu banner alternativo

Interfejs (programowanie obiektowe)

W tym artykule szczegółowo przeanalizujemy Interfejs (programowanie obiektowe), badając jego różne aspekty i cechy, aby zrozumieć jego wpływ w różnych kontekstach. Od momentu powstania do dzisiejszego znaczenia Interfejs (programowanie obiektowe) wzbudził znaczne zainteresowanie i debatę, stając się tematem zainteresowania ekspertów i ogółu społeczeństwa. Idąc tym tropem, zbadamy jego ewolucję historyczną, implikacje dla współczesnego społeczeństwa i możliwe konsekwencje, jakie ma na przyszłość. Artykuł ten ma na celu przedstawienie wszechstronnego spojrzenia na Interfejs (programowanie obiektowe), oferując w ten sposób solidny punkt wyjścia dla osób zainteresowanych zagłębieniem się w ten złożony i fascynujący temat.

Tu banner alternativo

Interfejs – definicja abstrakcyjnego typu posiadającego jedynie operacje, a nie dane. Kiedy w konkretnej klasie zdefiniowane są wszystkie metody interfejsu mówimy, że klasa implementuje dany interfejs. W programie mogą być tworzone zmienne typu referencja do interfejsu, nie można natomiast tworzyć obiektów tego typu. Referencja może wskazywać na obiekt dowolnej klasy implementującej dany interfejs. Interfejs określa udostępniane operacje, nie zawiera natomiast ich implementacji i danych. Z tego powodu klasy mogą implementować wiele interfejsów, bez problemów wynikających z wielokrotnego dziedziczenia. Wszystkie metody w interfejsie z reguły muszą być publiczne.

Interfejs pozwala na 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.

Przykład interfejsu w Javie

interface Interfejs{

  public void proc();

}

class Klasa implements Interfejs{

  @Override
  public void proc(){
    // ...
  }
}

Interfejs a Klasa Abstrakcyjna

między ww. typami danych są następujące różnice:

  • Interfejs może zawierać jedynie deklaracje metod, a klasa abstrakcyjna może zawierać również metody zdefiniowane.
  • Rozszerzając klasę abstrakcyjną, klasa może uczestniczyć jedynie w jednej hierarchii, natomiast używając interfejsów, klasa może uczestniczyć w wielu typach hierarchii.
  • interfejsy – w przeciwieństwie do klas abstrakcyjnych – wymagają od użytkownika implementacji wszystkich metod w nich zawartych. Ponadto Klasy abstrakcyjne mogą ułatwić ten proces, umożliwiając podstawową implementację danej funkcjonalności[1].
  • Wszystkie zadeklarowane metody w interfejsie są publiczne, natomiast metody zadeklarowane w klasach mogą być publiczne lub chronione.
  • Klasy abstrakcyjne mogą zawierać atrybuty, natomiast interfejsy – nie[2].

Przypisy