Różnica między klasą abstrakcyjną a klasą konkretną

Różnica między klasą abstrakcyjną a klasą konkretną
Różnica między klasą abstrakcyjną a klasą konkretną

Wideo: Różnica między klasą abstrakcyjną a klasą konkretną

Wideo: Różnica między klasą abstrakcyjną a klasą konkretną
Wideo: ✅ Какая разница между Прокси и VPN 2024, Lipiec
Anonim

Klasa abstrakcyjna a klasa konkretna

Większość popularnych współczesnych języków programowania obiektowego, takich jak Java i C, opiera się na klasach. Osiągają koncepcje zorientowane obiektowo, takie jak enkapsulacja, dziedziczenie i polimorfizm, dzięki wykorzystaniu klas. Klasy są abstrakcyjną reprezentacją obiektów świata rzeczywistego. Klasy mogą być konkretne lub abstrakcyjne w zależności od poziomu implementacji funkcjonalności ich metody. Klasa betonu w pełni implementuje wszystkie swoje metody. Klasę abstrakcyjną można uznać za ograniczoną wersję klasy zwykłej (konkretnej), w której może zawierać częściowo zaimplementowane metody. Zazwyczaj konkretne klasy są określane jako (tylko) klasy.

Co to jest klasa betonu?

Domyślną klasą jest klasa konkretna. Słowo kluczowe class służy do definiowania klas (np. w Javie). I zwykle nazywa się je po prostu klasami (bez przymiotnika konkretne). Klasy betonu przedstawiają koncepcyjną reprezentację obiektów świata rzeczywistego. Klasy mają właściwości zwane atrybutami. Atrybuty są implementowane jako zmienne globalne i instancyjne. Metody w klasach reprezentują lub definiują zachowanie tych klas. Metody i atrybuty klas nazywane są członkami klasy. Zazwyczaj enkapsulację osiąga się, czyniąc atrybuty prywatnymi, tworząc jednocześnie metody publiczne, których można użyć w celu uzyskania dostępu do tych atrybutów. Obiekt jest instancją klasy. Dziedziczenie pozwala użytkownikowi na rozszerzenie klas (nazywanych subklasami) z innych klas (nazywanych superklasami). Polimorfizm pozwala programiście na podstawienie obiektu klasy w miejsce obiektu jego superklasy. Zazwyczaj rzeczowniki znajdujące się w definicji problemu stają się bezpośrednio klasami w programie. I podobnie, czasowniki stają się metodami. Publiczne, prywatne i chronione to typowe modyfikatory dostępu używane w klasach.

Co to jest klasa abstrakcyjna?

Klasy abstrakcyjne są deklarowane przy użyciu słowa kluczowego Abstract (np. w Javie,). 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, staje się klasą konkretną. 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ę).

Jaka jest różnica między klasą abstrakcyjną a klasą konkretną?

Klasy abstrakcyjne zwykle mają częściową implementację lub nie mają jej wcale. Z drugiej strony, konkretne klasy zawsze mają pełną implementację swojego zachowania. W przeciwieństwie do klas konkretnych, klas abstrakcyjnych nie można utworzyć. Dlatego klasy abstrakcyjne muszą zostać rozszerzone, aby były użyteczne. Klasy abstrakcyjne mogą zawierać metody abstrakcyjne, ale klasy konkretne nie. Kiedy klasa abstrakcyjna jest rozszerzona, wszystkie metody (zarówno abstrakcyjne, jak i konkretne) są dziedziczone. Odziedziczona klasa może implementować dowolną lub wszystkie metody. Jeśli wszystkie metody abstrakcyjne nie są zaimplementowane, to ta klasa również staje się klasą abstrakcyjną.

Zalecana: