Abstrakcja w Java
Czym jest abstrakcja Java?
Abstrakcja jest koncepcją programowania obiektowego, która „pokazuje” tylko istotne atrybuty i „ukrywa” niepotrzebne informacje. Głównym celem abstrakcji jest ukrywanie niepotrzebnych szczegółów przed użytkownikami. Abstrakcja to wybieranie danych z większego zbioru, aby pokazać użytkownikowi tylko istotne szczegóły obiektu. Pomaga w redukcji złożoności i wysiłków programowania. Jest to jedna z najważniejszych koncepcji OOP.
Kliknij tutaj jeśli film nie jest dostępny
Przeanalizujmy abstrakcję w OOP na przykładzie:
Załóżmy, że chcesz utworzyć aplikację bankową i poproszono cię o zebranie wszystkich informacji o twoim kliencie. Istnieje prawdopodobieństwo, że znajdziesz następujące informacje o kliencie
Jednak nie wszystkie powyższe informacje są wymagane do utworzenia aplikacji bankowej. Dlatego musisz wybrać tylko przydatne informacje dla swojego aplikacja bankowa z tego basenu. Dane takie jak imię i nazwisko, adres, informacje podatkowe itp. mają sens w przypadku aplikacji bankowej, która jest przykładem abstrakcji w OOP
Ponieważ pobraliśmy/usunęliśmy/wybraliśmy informacje o kliencie z większej puli, proces ten w języku angielskim nazywany jest Abstrakcją. OOP. Jednak te same informacje po wyodrębnieniu mogą być wykorzystane w szerokim zakresie aplikacji. Na przykład, możesz użyć tych samych danych do aplikacji szpitalnej, aplikacji portalu pracy, bazy danych rządowej itp. z niewielką lub żadną modyfikacją. Stąd stają się Twoimi danymi głównymi. Jest to zaleta abstrakcji w OOP.
Różnica między abstrakcją a enkapsulacją
Abstrakcja | Kapsułkowanie |
---|---|
Abstrakcja w programowaniu obiektowym rozwiązuje problemy na poziomie projektu. | Enkapsulacja rozwiązuje ten poziom implementacji. |
Abstrakcja w programowaniu polega na ukrywaniu niepotrzebnych szczegółów, a jednocześnie pokazywaniu najważniejszych informacji. | Hermetyzacja oznacza powiązanie kodu i danych w jedną całość. |
Abstrakcja danych w Java pozwala skupić się na tym, co musi zawierać obiekt informacyjny | Kapsułkowanie oznacza ukrycie wewnętrznych szczegółów lub mechanizmów działania obiektu ze względów bezpieczeństwa. |
Różnica między klasą abstrakcyjną a interfejsem
Klasa abstrakcyjna | Interfejs |
---|---|
Klasa abstrakcyjna może mieć zarówno metody abstrakcyjne, jak i nieabstrakcyjne. | Interfejs może zawierać wyłącznie metody abstrakcyjne. |
Nie obsługuje wielokrotnego dziedziczenia. | Obsługuje wielokrotne dziedziczenie. |
Może zapewnić implementację interfejsu. | Nie może zapewnić implementacji klasy abstrakcyjnej. |
Klasa abstrakcyjna może mieć chronione i abstrakcyjne metody publiczne. | Interfejs może mieć tylko publiczne metody abstrakcyjne. |
Klasa abstrakcyjna może mieć końcową, statyczną lub statyczną zmienną końcową z dowolnym specyfikatorem dostępu. | Interfejs może mieć tylko publiczną statyczną zmienną końcową. |
Co to jest klasa abstrakcyjna?
KLASA abstrakcyjna jest rodzajem zajęć Java, które deklarują jedną lub więcej metod abstrakcyjnych. Klasy te mogą mieć metody abstrakcyjne, a także metody konkretne. Normalna klasa nie może mieć metod abstrakcyjnych. Klasa abstrakcyjna to klasa zawierająca co najmniej jedną metodę abstrakcyjną. Możemy zrozumieć tę koncepcję poprzez przykład kształtu w Javie.
Rozważ następującą hierarchię klas składającą się z klasy Shape, która jest dziedziczona przez trzy klasy Rectangle, Circle i Triangle. Klasa Shape została utworzona, aby zaoszczędzić na wspólnych atrybutach i metodach współdzielonych przez trzy klasy Rectangle, Circle i Triangle. calculatorArea() jest jedną z takich metod współdzielonych przez wszystkie trzy klasy podrzędne i obecną w klasie Shape.
Załóżmy teraz, że piszesz kod, aby utworzyć obiekty dla klas przedstawionych powyżej. Obserwujmy, jak te obiekty będą wyglądać w praktycznym świecie. Obiekt klasy prostokąt nada prostokątowi kształt, który tak powszechnie obserwujemy w życiu codziennym.
Obiekt trójkąta klasowego da trójkąt, znowu powszechny codzienny kształt.
Ale jak wyglądałby obiekt Class Shape w praktycznym świecie?
Jeśli zauważysz, że klasa Shape służy nasz cel osiągnięcia dziedzictwo i polimorfizm. Ale nie został zbudowany do tworzenia instancji. Takie klasy można oznaczyć etykietami Abstrakcyjny. Nie można utworzyć instancji abstrakcyjnej klasy Java.
Składnia:
abstract class Shape{ // code }
Możliwe, że NIE oznaczysz klasy Shape jako abstrakcyjnej, a następnie utworzysz jej instancję. Ale taki obiekt nie będzie miał zastosowania w twoim kodzie i otworzy miejsce na potencjalne błędy. Dlatego nie jest to pożądane.
Czym są metody abstrakcyjne Java?
METODA ABSTRAKCYJNA in Java, to metoda, która ma tylko definicję metody, ale nie zawiera implementacji. Metoda bez treści nazywana jest metodą abstrakcyjną. Musi być zadeklarowany w klasie abstrakcyjnej. Metoda abstrakcyjna nigdy nie będzie ostateczna, ponieważ klasa abstrakcyjna musi implementować wszystkie metody abstrakcyjne.
Jak wszyscy wiemy, wzór na obliczenie pola prostokąta, koła i trójkąta jest inny. Metoda obliczArea() będzie musiała zostać zastąpiona przez klasy dziedziczące. Nie ma sensu definiować tego w klasie Shape, ale musimy się upewnić, że wszystkie klasy dziedziczące mają tę metodę.
Takie metody można nazwać abstrakcyjny.
Składnia:
abstract public void calculateArea();
Dla metoda abstrakcyjna, nie jest wymagana żadna implementacja. Zdefiniowany jest tylko podpis metody.
Przykład kodu abstrakcji
abstract class Shape{ abstract void calculateArea(); } class guru99 extends Shape{ void calculateArea(){System.out.println("Area of Shape");} public static void main(String args[]){ Shape obj = new guru99(); obj.calculateArea(); } }
Zalety abstrakcji
- Główną zaletą stosowania abstrakcji w Programowanie polega na tym, że pozwala zgrupować kilka powiązanych klas jako rodzeństwo.
- Abstrakcja w programowaniu obiektowym pomaga uprościć proces projektowania i implementacji oprogramowania.
Ostateczne słowo kluczowe w Java
Ostatni modyfikator dotyczy klas, metod i zmiennych. Znaczenie słowa final różni się w zależności od kontekstu, ale podstawowa idea jest taka sama.
- Klasy końcowej nie można dziedziczyć
- Zmienna końcowa staje się stałą i nie można zmienić jej wartości.
- Nie można zastąpić metody końcowej. Odbywa się to ze względów bezpieczeństwa, a metody te służą do optymalizacji.
Przykład :- Aby nauczyć się abstrakcyjnych i końcowych słów kluczowych
Krok 1) Skopiuj poniższy kod do edytora.
abstract class Shape{ final int b = 20; public void display(){ System.out.println("This is display method"); } abstract public void calculateArea(); } public class Rectangle extends Shape{ public static void main(String args[]){ Rectangle obj = new Rectangle(); obj.display(); //obj.b=200; } //public void calculateArea(){} }
Krok 2) Zapisz, skompiluj i uruchom kod.
Krok 3) Błąd =? Metoda abstrakcyjna nie jest zaimplementowana w klasie Rectangle. Aby rozwiązać problem, odkomentuj wiersz nr 15.
Krok 4) Odkomentuj linię nr 13. Zapisz i skompiluj kod.
Krok 5) Błąd =? zmienna b jest ostateczna
Kiedy stosować metody abstrakcyjne i klasę abstrakcyjną?
Metody abstrakcyjne są najczęściej deklarowane tam, gdzie dwie lub więcej podklas również robi to samo na różne sposoby poprzez różne implementacje. Rozszerza także tę samą klasę abstrakcyjną i oferuje różne implementacje metod abstrakcyjnych.
Klasy abstrakcyjne pomagają opisać ogólne typy zachowań i hierarchię klas programowania obiektowego. Opisują również podklasy, aby zaoferować szczegóły implementacji klasy abstrakcyjnej.
Podsumowanie:
- Abstrakcja w programowaniu to proces wybierania ważnych zbiorów danych dla przedmiot w oprogramowaniu i pomijając te nieistotne.
- Po zamodelowaniu obiektu za pomocą abstrakcji danych w Java, ten sam zestaw danych można wykorzystać w różnych aplikacjach.