Klasa abstrakcyjna a dziedziczenie
Klasa abstrakcyjna i Dziedziczenie to dwie ważne koncepcje zorientowane obiektowo, które można znaleźć w wielu językach programowania zorientowanych obiektowo, takich jak Java. Klasę abstrakcyjną można uznać za abstrakcyjną wersję zwykłej (konkretnej) klasy, podczas gdy Dziedziczenie pozwala nowym klasom rozszerzać inne klasy. Klasa abstrakcyjna to klasa, której nie można zainicjować, ale można ją rozszerzyć. Tak więc klasy abstrakcyjne mają sens tylko wtedy, gdy język programowania obsługuje dziedziczenie. W Javie klasy abstrakcyjne deklarowane są za pomocą słowa kluczowego Abstract, natomiast słowo kluczowe Extends służy do dziedziczenia po klasie (super).
Co to jest klasa abstrakcyjna?
Zazwyczaj klasy abstrakcyjne, znane również jako abstrakcyjne klasy bazowe (ABC), nie mogą być tworzone (nie można utworzyć wystąpienia tej klasy). Tak więc klasy abstrakcyjne mają sens tylko wtedy, gdy język programowania obsługuje dziedziczenie (możliwość tworzenia podklas z rozszerzenia klasy). Klasy abstrakcyjne zwykle reprezentują abstrakcyjną koncepcję lub jednostkę z częściową implementacją lub bez implementacji. Dlatego klasy abstrakcyjne działają jako klasy nadrzędne, z których pochodzą klasy potomne, dzięki czemu klasa potomna będzie współdzielić niekompletne cechy klasy nadrzędnej, a funkcjonalność może zostać dodana w celu ich ukończenia.
Klasy abstrakcyjne mogą zawierać metody abstrakcyjne. Podklasy rozszerzające klasę abstrakcyjną mogą implementować te (dziedziczone) metody abstrakcyjne. Jeśli klasa potomna implementuje wszystkie takie metody abstrakcyjne, jest to klasa konkretna. Ale jeśli tak nie jest, klasa potomna staje się również klasą abstrakcyjną. Oznacza to, że kiedy programista wyznacza klasę jako Abstrakt, mówi, że klasa będzie niekompletna i będzie zawierała elementy, które muszą zostać uzupełnione przez dziedziczące podklasy. To fajny sposób na stworzenie kontraktu między dwoma programistami, który upraszcza zadania w tworzeniu oprogramowania. Programista, który pisze kod do dziedziczenia, musi dokładnie przestrzegać definicji metod (ale oczywiście może mieć własną implementację).
Co to jest dziedziczenie?
Dziedziczenie to koncepcja zorientowana obiektowo, która pozwala nowym klasom rozszerzać inne klasy. Słowo kluczowe Extends służy do implementacji koncepcji dziedziczenia w języku programowania Java. Dziedziczenie zasadniczo zapewnia ponowne wykorzystanie kodu, umożliwiając rozszerzenie właściwości i zachowania istniejącej klasy o nowo zdefiniowaną klasę. Kiedy nowa podklasa (lub klasa pochodna) rozszerza superklasę (lub klasę nadrzędną), ta podklasa odziedziczy wszystkie atrybuty i metody superklasy. Podklasa może opcjonalnie przesłonić zachowanie (zapewnić nową lub rozszerzoną funkcjonalność metodom) odziedziczone z klasy nadrzędnej. Zazwyczaj podklasa A nie może rozszerzać wielu superklas (np. w Javie). Dlatego nie można używać rozszerzeń do wielokrotnego dziedziczenia. Aby mieć wielokrotne dziedziczenie, musisz użyć interfejsów.
Jaka jest różnica między klasą abstrakcyjną a dziedziczeniem?
Klasy abstrakcyjne zwykle reprezentują abstrakcyjne pojęcie lub jednostkę z częściową implementacją lub bez implementacji. Dziedziczenie pozwala nowym klasom rozszerzać inne klasy. Ponieważ nie można utworzyć instancji klas abstrakcyjnych, musisz użyć koncepcji dziedziczenia, aby skorzystać z klas abstrakcyjnych. W przeciwnym razie klasa Abstract jest bezużyteczna. Klasy abstrakcyjne mogą zawierać metody abstrakcyjne, a gdy klasa jest rozszerzona, wszystkie metody (abstrakcyjna i konkretna) są dziedziczone. Odziedziczona klasa może implementować dowolną lub wszystkie metody. Jeśli wszystkie metody abstrakcyjne nie są zaimplementowane, ta klasa staje się również klasą abstrakcyjną. Klasa nie może dziedziczyć z więcej niż jednej klasy abstrakcyjnej (nie jest to cecha klas abstrakcyjnych per se, ale raczej ograniczenie dziedziczenia).
Powiązane posty:
![Image Image](https://i.what-difference.com/images/006/image-15310-1-j.webp)
![Image Image](https://i.what-difference.com/images/006/image-15310-2-j.webp)
Różnica między klasą abstrakcyjną a klasą konkretną
![Image Image](https://i.what-difference.com/images/006/image-15310-3-j.webp)
![Image Image](https://i.what-difference.com/images/006/image-15310-4-j.webp)
Różnica między wirtualnym a abstrakcyjnym
![Image Image](https://i.what-difference.com/images/006/image-15310-5-j.webp)
![Image Image](https://i.what-difference.com/images/006/image-15310-6-j.webp)
Różnica między klasą abstrakcyjną a interfejsem
![Image Image](https://i.what-difference.com/images/006/image-15310-7-j.webp)
![Image Image](https://i.what-difference.com/images/006/image-15310-8-j.webp)
Różnica między osprzętem a przedłużeniami
![Image Image](https://i.what-difference.com/images/006/image-15310-9-j.webp)
![Image Image](https://i.what-difference.com/images/006/image-15310-10-j.webp)
Różnica między wykresem a drzewem
Zarchiwizowane pod: Programowanie Oznaczone tagiem: ABC, abstrakcyjne, Abstrakcyjne klasy bazowe, Klasa abstrakcyjna, Klasy abstrakcyjne, Słowo kluczowe abstrakcyjne, Metody abstrakcyjne, klasa konkretna, Słowo kluczowe rozszerzające, Dziedziczenie, Klasa dziedziczenia, klasa dziedziczona, Java, dziedziczenie wielokrotne, koncepcje obiektowe, klasa zwykła, super klasa
![Obraz Obraz](https://i.what-difference.com/images/006/image-15310-11-j.webp)
O autorze: Indika
Indika, BSc. Eng, MSCE Inżynieria komputerowa, PhD. Informatyka, jest adiunktem i ma zainteresowania badawcze w dziedzinie bioinformatyki, biologii obliczeniowej i biomedycznego przetwarzania języka naturalnego.
Komentarze
-
Obraz Jason mówi
30 sierpnia 2017 o 13:25
Dziękuję za wyjaśnienie różnicy. Wszystkie moje pytania zostały przez to rozwiązane.
Odpowiedz
-
Obraz Aus mówi
10 maja 2019 o 15:04
najlepsza odpowiedź w sieci, nauczyciel nie wyjaśnia gówna i nie ma sensu, monotonny mf. W ten sposób wyjaśniasz pojęcia.
Odpowiedz
Zostaw odpowiedź Anuluj odpowiedź
Twój adres e-mail nie zostanie opublikowany. Pola wymagane są oznaczone
Komentarz
Nazwa
Strona internetowa
![Poproś o artykuł Poproś o artykuł](https://i.what-difference.com/images/006/image-15310-14-j.webp)
![Poproś o artykuł Poproś o artykuł](https://i.what-difference.com/images/006/image-15310-15-j.webp)
Polecane posty
![Różnica między koronawirusem a objawami przeziębienia Różnica między koronawirusem a objawami przeziębienia](https://i.what-difference.com/images/006/image-15310-16-j.webp)
Różnica między koronawirusem a objawami przeziębienia
![Różnica między koronawirusem a SARS Różnica między koronawirusem a SARS](https://i.what-difference.com/images/006/image-15310-17-j.webp)
Różnica między koronawirusem a SARS
![Różnica między koronawirusem a grypą Różnica między koronawirusem a grypą](https://i.what-difference.com/images/006/image-15310-18-j.webp)
Różnica między koronawirusem a grypą
![Różnica między koronawirusem a Covid 19 Różnica między koronawirusem a Covid 19](https://i.what-difference.com/images/006/image-15310-19-j.webp)