Klasa i interfejs są używane do tworzenia nowych typów referencyjnych. Klasa jest zbiorem pól i metod, które operują na polach. Interfejs posiada w pełni abstrakcyjne metody, tzn. metody, które nie zawierają nikogo. Interfejs jest syntaktycznie podobny do klasy, ale istnieje zasadnicza różnica między klasą a interfejsem, który jest klasa może być instantiated, ale interfejs nigdy nie może być instantiated.
Więc dowiedzmy się trochę więcej różnic między klasą a interfejsem z pomocą wykresu porównawczego pokazanego poniżej.
Content: Class Vs Interface
- Comparison Chart
- Definition
- Key Differences
- Conclusion
Comparison Chart
Podstawa porównania | Klasa | Interfejs |
---|---|---|
Podstawa | Klasa jest instancjonowana w celu tworzenia obiektów. | Interfejs nigdy nie może być instantyzowany, ponieważ jego metody nie są w stanie wykonać żadnej akcji przy wywołaniu. |
Słowo kluczowe | klasa | interfejs |
Specyfikator dostępu | Członkowie klasy mogą być prywatni, publiczni lub chronieni. | Członkowie interfejsu są zawsze publiczni. |
Metody | Metody klasy są zdefiniowane w celu wykonania określonego działania. | Metody w interfejsie są czysto abstrakcyjne. |
Implement/Extend | Klasa może implementować dowolną liczbę interfejsów i może rozszerzyć tylko jedną klasę. | Interfejs może rozszerzyć wiele interfejsów, ale nie może implementować żadnego interfejsu. |
Konstruktor | Klasa może mieć konstruktory do inicjalizacji zmiennych. | Interfejs nigdy nie może mieć konstruktora, ponieważ nie ma prawie żadnej zmiennej do inicjalizacji. |
Definicja klasy
Klasa jest najważniejszym aspektem programowania w Javie bez klas nie można zaimplementować programu java. Klasa tworzy typy referencyjne i te typy referencyjne są używane do tworzenia obiektów. Klasa posiada sygnaturę i ciało. Sygnatura klasy zawiera nazwę klasy oraz informację, czy klasa odziedziczyła inną klasę. Ciało klasy posiada pola i metody, które operują na tych polach. Klasa jest tworzona przy użyciu słowa kluczowego class. Zobaczmy, jak zadeklarować klasę.
class class_name{/*fields...methods*/}
Gdy klasa jest instancjonowana, każdy utworzony obiekt zawiera kopię pól i metod wraz z nimi. Pola i członkowie zadeklarowani wewnątrz klasy mogą być statyczne lub niestatyczne. Statyczni członkowie mają stałą wartość dla każdego obiektu, podczas gdy niestatyczni członkowie są inicjowani przez każdy obiekt inaczej, zgodnie z jego wymaganiami.
Członkowie klasy mają specyfikatory dostępu, które decydują o widoczności i dostępności członków dla użytkownika lub podklas. Specyfikatorami dostępu są public, private i protected. Klasa może być dziedziczona przez inną klasę przy użyciu specyfikatora dostępu, który zadecyduje o widoczności członków nadklasy (klasy dziedziczącej) w podklasie (klasie dziedziczącej). W ten sposób klasa spełnia koncepcję ukrywania danych i enkapsulacji w programowaniu obiektowym.
Definicja interfejsu
Interfejs jest również jednym z typów referencyjnych zdefiniowanych w Javie. Znaczenie interfejsu polega na tym, że w Javie klasa może dziedziczyć tylko po jednej klasie. Aby uniknąć tego ograniczenia, projektanci Javy wprowadzili pojęcie interfejsu. Interfejs jest syntaktycznie podobny do klasy, ale nie posiada deklaracji pól, a metody wewnątrz interfejsu nie posiadają żadnej implementacji. Interfejs deklaruje się za pomocą słowa kluczowego interface. Przyjrzyjmy się deklaracji interfejsu.
interface interface_name {type var_name= value;type method1(parameter-list);type method2(parameter-list);..}
Interfejs nie definiuje żadnej metody zadeklarowanej wewnątrz niego, ponieważ brakuje mu pól, na których mógłby operować. Tylko dlatego, że jakakolwiek metoda wewnątrz interfejsu nie wykonuje żadnej akcji, interfejs nigdy nie może być instancjonowany. Jeśli interfejs posiada jakiekolwiek pola, muszą one być zainicjalizowane w momencie ich deklaracji. Interfejs nigdy nie zawiera żadnych konstruktorów, ponieważ brakuje w nim członków pola, którzy mogliby zostać zainicjalizowani. Tak więc interfejs definiuje tylko to, co klasa musi zrobić, a nie jak musi to zrobić.
Integracja raz utworzonego interfejsu może być zaimplementowana przez dowolną liczbę klas przy użyciu słowa kluczowego implements. Ale klasy implementujące interfejs muszą zdefiniować wszystkie metody wewnątrz interfejsu. Interfejs może również dziedziczyć po innym interfejsie używając słowa kluczowego extend. Jeśli klasa implementuje interfejs, który rozszerza inny interfejs. Wtedy klasa musi zdefiniować metody obu interfejsów występujących w łańcuchu. Metody wewnątrz interfejsu muszą być zawsze publiczne, ponieważ muszą być dostępne dla klas je implementujących.
Kluczowe różnice między klasą a interfejsem w Javie
- Klasa może być instancjonowana poprzez tworzenie jej obiektów. Interfejs nigdy nie jest instancjonowany, ponieważ metody zadeklarowane wewnątrz interfejsu są abstrakcyjne i nie wykonują żadnych działań, więc nie ma potrzeby instancjonowania żadnego interfejsu.
- Klasa jest deklarowana przy użyciu słowa kluczowego class. W ten sam sposób interfejs jest tworzony przy użyciu słowa kluczowego interface.
- Członkowie klasy mogą mieć specyfikatory dostępu takie jak public, private, protected. Ale członkowie interfejsu są zawsze publiczni, ponieważ muszą być dostępne dla klas, które je implementują.
- Metody wewnątrz klasy są zdefiniowane do wykonywania działań na polach zadeklarowanych w klasie. Ponieważ interfejsowi brakuje deklaracji pól, metody wewnątrz interfejsu są czysto abstrakcyjne.
- Klasa może implementować dowolną liczbę interfejsów, ale może rozszerzyć tylko jedną superklasę. Interfejs może rozszerzyć dowolną liczbę interfejsów, ale nie może zaimplementować żadnego interfejsu.
- Klasa ma konstruktory zdefiniowane wewnątrz niej, aby uzyskać zmienną zainicjalizowaną. Ale interfejs nie ma żadnych konstruktorów, ponieważ nie ma pól do zainicjalizowania. Pola interfejsu są inicjalizowane tylko w momencie ich deklaracji.
Zakończenie
Zarówno klasy jak i interfejsy mają swoje znaczenie. Klasa jest używana, gdy musimy zdefiniować, jak zadanie zostanie wykonane. Interfejs jest używany, gdy musimy wiedzieć, jakie zadanie ma być wykonane.
.