W poprzednim blogu dowiedziałeś się o w Javie. Teraz na tym blogu zrozumiemy jeszcze jeden ważny filar czyli Abstrakcja Java, której główną funkcją jest ukrycie wewnętrznych szczegółów implementacji.
W tym artykule omówię poniższe tematy:
- Abstrakcja w OOP
- Co to jest abstrakcja Java?
- Klasa abstrakcyjna
- Berło
- Prawdziwy przykład abstrakcji w Javie
- Abstrakcja a hermetyzacja
Możesz również przejrzeć to nagranie gdzie możesz szczegółowo zrozumieć tematy z przykładami.
Abstrakcja w OOP
Kiedy ogólnie mówimy o abstrakcji, język oprogramowania jest przykładem abstrakcji. Weźmy przykład i napiszmy oświadczenie jako-
x = y + z
W powyższej instrukcji dodajemy dwie zmienne, które są przechowywane w dwóch różnych lokalizacjach, a następnie przechowujemy wynik w nowej lokalizacji. Więc co dalej? Jak być może wiesz, w grę wchodzą rejestry, zestawy instrukcji, liczniki programów, jednostki pamięci itp. Kiedy mówimy o abstrakcji w Javie, mówimy o abstrakcji w i jak to jest osiągane. Pojęcie abstrakcji w OOP zaczyna się w momencie, gdy powstaje klasa. Abstrakcja jest stosowana wszędzie w oprogramowaniu i OOP.
Co to jest abstrakcja Java?
Abstrakcja to nic innego jak jakość radzenia sobie z pomysłami, a nie wydarzeniami. Zasadniczo zajmuje się ukrywaniem wewnętrznych szczegółów i pokazywaniem użytkownikowi najważniejszych rzeczy.
Jeśli spojrzysz na powyższy gif, zobaczysz, kiedy otrzymasz połączenie, mamy możliwość odebrania go lub po prostu odrzucenia. Ale w rzeczywistości w tle działa dużo kodu. Więc tutaj nie znasz wewnętrznego przetwarzania generowania połączenia, na tym polega piękno abstrakcji. Możesz osiągnąć abstrakcję na dwa sposoby:
a) Klasa abstrakcyjna
b) Interfejs
Rozważmy bardziej szczegółowo te pojęcia.
Klasa abstrakcyjna
Klasa abstrakcyjna zawiera słowo kluczowe „abstract”. Ale co to dokładnie oznacza? Jeśli uczynisz klasę abstrakcyjną, nie można jej utworzyć instancji, tj. Nie możesz utworzyć obiektu klasy abstrakcyjnej. Ponadto klasa abstrakcyjna może zawierać zarówno metody abstrakcyjne, jak i konkretne.
Uwaga: Możesz osiągnąć abstrakcje 0-100%, używając klasy abstrakcyjnej.
Aby użyć klasy abstrakcyjnej, musisz odziedziczyć ją z klasy bazowej. Tutaj musisz zapewnić implementacje dla metod abstrakcyjnych, w przeciwnym razie stanie się klasą abstrakcyjną.
jest językiem programowania
Spójrzmy na składnię klasy abstrakcyjnej:
Klasa abstrakcyjna Sports {// Klasa abstrakcyjna sport Klasa abstrakcyjna void jump () // metoda abstrakcyjna}
Berło
Interfejs w Javie to zbiór metod abstrakcyjnych i stałych statycznych. Jak być może wiesz w interfejsie, każda metoda jest publiczna i abstrakcyjna, ale nie zawiera żadnego konstruktora. Oprócz abstrakcji interfejs pomaga również w osiągnięciu wielokrotnego dziedziczenia w Javie.
Uwaga: Możesz osiągnąć 100% abstrakcji za pomocą interfejsów.
Zasadniczo Interface to grupa powiązanych metod z pustymi treściami. Zrozummy interfejsy na przykładzie interfejsu Shape z powiązanymi z nim metodami.
public interface shape {public void draw () public double getArea ()}
Te metody muszą być obecne w każdym „kształcie”, prawda? Ale ich praca będzie inna.
Załóżmy, że chcesz narysować kształt, na przykład koło, kwadrat, prostokąt itp. Wiesz już, że każdy kształt ma swoje własne wymiary, takie jak promień, wysokość i szerokość. Powiedz, że chcę narysować okrąg i obliczyć jego powierzchnię. Biorąc pod uwagę to samo, w powyższym kodzie utworzyłem dwie metody, tj. Draw () i getArea (). Teraz, używając tych metod, mogę narysować dowolny kształt i obliczyć obszar, implementując jego interfejs.
Przyjrzyjmy się teraz funkcjonalności, w jaki sposób można zaimplementować ten interfejs.
Aby zaimplementować ten interfejs, nazwa Twojej klasy zmieniłaby się na dowolną z Shape, powiedzmy „Circle”. Aby zaimplementować interfejs klasy, użyję słowa kluczowego „implement”:
public class Circle implementuje Shape {private double radius public Circle (double r) {this.radius = r} void draw () {System.out.println ('Drawing Circle')} public double getArea () {return Math.PI * this.radius * this.radius} public double getRadius () {return this.radius}} public class Test {public static void main (String args []) {Shape c = new Circle (8) c.draw () System. out.println ('Area =' + c.getArea ())}}
W powyższym przykładzie określiłem funkcjonalności dla różnych metod i wyliczyłem pole koła. Tutaj, po zaimplementowaniu interfejsu, pozwala klasie stać się bardziej formalną pod względem zachowania, które zapewnia. Możesz także utworzyć inną klasę, na przykład klasę „Rectangle”, która może dziedziczyć ten sam „kształt” interfejsu z różnymi funkcjami.
Przykład abstrakcji w czasie rzeczywistym w Javie
Załóżmy, że mamy interfejs Sport. Tutaj wdrożenie zapewnią zajęcia „Badminton” i „Piłka nożna”. W prawdziwym scenariuszu użytkownik końcowy nie będzie świadomy klasy implementacji. Stąd obiekt klasy implementacji może być dostarczony metodą fabryczną. Metodę fabryczną można wykorzystać do stworzenia obiektu klasy implementacji na podstawie jakiegoś kryterium.
Zaimplementujmy to samo i stwórzmy interfejs o nazwie Sport.java.
public Interface Sport {void play ()} // Teraz utworzymy klasę o nazwie „Badminton” Klasa publiczna Badminton implementuje Sport {@Override public void play () {System.out.println ('Gra w badmintona')}} // Następnie stwórzmy naszą ostatnią klasę „Futbol”, publiczną klasę Piłkarską. Sport {@Override public void play () {System.out.println ('Gra w piłkę nożną')}
Ostatnim krokiem jest utworzenie głównej klasy o nazwie „SportInterface”.
public SportInterface {public static void main (String args []) {// tutaj twój kod}}
Po wykonaniu powyższego programu dane wyjściowe będą wyglądać tak, jak pokazano poniżej:
Gra w badmintona ------------------- Gra w piłkę nożną
Mam nadzieję, że zrozumieliście interfejs i sposób, w jaki można osiągnąć abstrakcję za jego pomocą. A teraz zakończmy ten artykuł, porównując abstrakcję i enkapsulację.
Abstrakcja a hermetyzacja
Abstrakcja | Kapsułkowanie |
Rozwiązuje problem na poziomie projektowania | Rozwiązuje problem na poziomie implementacji |
Służy do ukrywania niechcianych danych i podawania odpowiednich wyników | Hermetyzacja oznacza ukrycie kodu i danych w jednej jednostce w celu ochrony danych przed światem zewnętrznym |
Układ zewnętrzny - używany w zakresie projektowania | Układ wewnętrzny - używany pod względem wykonania |
Mam nadzieję, że zrozumiałeś różnicę między abstrakcją a enkapsulacją. Na tym kończymy się na blogu Java Abstraction. Mam nadzieję, że okazały się przydatne i pomogły zwiększyć wartość Twojej wiedzy. Jeśli chcesz dowiedzieć się więcej o Javie, możesz zapoznać się z
Teraz, gdy zrozumiałeś już „Czym jest abstrakcja Java”, zapoznaj się z autorstwa Edureka, zaufanej firmy zajmującej się edukacją online, z siecią ponad 250 000 zadowolonych uczniów rozsianych po całym świecie. Szkolenie i certyfikacja J2EE i SOA firmy Edureka jest przeznaczony dla studentów i profesjonalistów, którzy chcą zostać programistami Java. Kurs ma na celu zapewnienie przewagi w programowaniu w języku Java i szkolenie zarówno podstawowych, jak i zaawansowanych koncepcji języka Java, a także różnych struktur Java, takich jak Hibernate i Spring.
Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy na tym blogu „Java Abstraction”, a my skontaktujemy się z Tobą tak szybko, jak to możliwe.