Klasy abstrakcyjne i interfejsy to dwa główne elementy składowez . Chociaż oba są używane głównie do abstrakcji, bardzo się od siebie różnią i nie można ich używać zamiennie. W tym artykule dowiemy się, jaka jest różnica między klasą abstrakcyjną a interfejsem w Javie.
Tematy omówione w tym artykule są następujące:
- Co to jest klasa abstrakcyjna w Javie?
- Interfejs w Javie
- Klasa abstrakcyjna a interfejs
- Kiedy używać klasy abstrakcyjnej, a kiedy interfejsu?
Aby zrozumieć różnice między klasą abstrakcyjną a interfejsem w programie , musisz wiedzieć, czym jest klasa abstrakcyjna i czym jest interfejs. Zacznijmy więc od omówienia, co to jest.
Co to jest klasa abstrakcyjna w Javie?
W dowolnym języku programowania abstrakcja oznacza ukrycie nieistotnych szczegółów przed użytkownikiem, aby skupić się tylko na istotnych szczegółach w celu zwiększenia wydajności, a tym samym zmniejszenia złożoności. W Javie abstrakcję osiąga się za pomocą klasy abstrakcyjne . Klasa abstrakcyjna obejmuje typowe cechy podklas i może zawierać dowolną metodę abstrakcyjną lub nie. Nie można jej utworzyć instancji, ale może być używana tylko jako nadklasa przez jej podklasy. Oto przykładowy program przedstawiający klasę abstrakcyjną:
Uwaga: Na metoda abstrakcyjna , to metoda, która nie jest zaimplementowana i dodajeniekompletność do klasa .
pakiet MyPackage // klasa abstrakcyjna klasa abstrakcyjna Animal {String AnimalName = '' Animal (String name) {this.AnimalName = name} // deklaruj metody nieabstrakcyjne // ma domyślną implementację public void BasicInfo (String details) {System. out.println (this.AnimalName + '' + details)} // abstrakcyjne metody, które zostaną // zaimplementowane przez jego podklasę (y) abstract public void habitat () abstract public void respiration ()} class Terrestrial extends Animal {// constructor Terrestrial (String name) {super (name)} @Override public void habitat () {System.out.println ('Leave on land and')} @Override public void respiration () {System.out.println ('respire przez płuca lub tchawicę. ')}} class Aquatic extends Animal {// constructor Aquatic (String name) {super (name)} @Override public void habitat () {System.out.println (' Pozostawia w wodzie i ') } @Override public void respiration () {System.out.println ('oddychaj przez skrzela lub ich skórę.')}} Class AbstractClassDemo {public static voi d main (String [] args) {// tworzenie obiektu klasy Terrestrial // i używanie odwołania do klasy Animal. Animal object1 = new Terrestrial ('Humans') object1.BasicInfo ('są istotami ziemskimi, one') object1.habitat () object1.respiration () System.out.println ('') // tworzenie obiektów klasy Circle Animal object2 = new Aquatic ('Ryby') object2.BasicInfo ('są istotami wodnymi, one') object2.habitat () object2.respiration ()}}
Wynik
Ludzie są istotami ziemskimi, opuszczają ziemię i oddychają przez płuca lub tchawicę. Ryby są istotami wodnymi, wypływają z wody i oddychają przez skrzela lub skórę.
Plik Podstawowa informacja () jest metodą udostępnianą przez Ziemski i Wodny zajęcia. Od Klasa zwierząt nie można zainicjować, tworzymy obiekty Ziemski i Wodny zajęcia do celów programistycznych. Następnie mamy interfejsy.
Interfejs w Javie
Inny sposób na osiągnięcie abstrakcja w Javie za pomocą interfejsy .Interfejs jest zbiorem abstrakcyjnych metod, nie ma żadnego konkretu , w przeciwieństwie do klasy abstrakcyjnej. Jednak w przeciwieństwie do klasy abstrakcyjnej interfejs zapewnia pełną abstrakcję w Javie. Może mieć zarówno metody, jak i zmienne, tak jak klasa. Jednak metody zadeklarowane w interfejsie są domyślnie abstrakcyjne.Oto plik demonstrowanie klasy abstrakcyjnej:
pakiet MyPackage interfejs Animals {// abstrakcyjne metody void habitat () void respiration ()} class TerrestrialA implementuje Animals {String AnimalName = '' // konstruktor TerrestrialA (String name) {this.AnimalName = name} @Override public void habitat () {System.out.println (this.AnimalName + 'leave on land and')} @Override public void respiration () {System.out.println ('oddychaj przez płuca lub tchawicę.')}} Class AquaticA implements Animals {String AnimalName = '' // constructor AquaticA (String name) {this.AnimalName = name} @Override public void habitat () {System.out.println (this.AnimalName + 'leave in water and')} @Override public void habitat () {System.out.println (this.AnimalName + 'leave in water and')} @Override public void respiration () {System.out.println ('oddychaj przez skrzela lub ich skórę.')}} Class JavaInterfaceDemo {public static void main (String [] args) {// tworzenie obiektu klasy Terrestrial // i używanie odwołania do klasy Animal . Animals object1 = new TerrestrialA ('Humans') object1.habitat () object1.respiration () System.out.println ('') // tworzenie klasy Objects of circle Animals object2 = new AquaticA ('Fishes') object2.habitat () object2.respiration ()}}
Wynik
Ludzie opuszczają ląd i oddychają przez płuca lub tchawicę. Ryby pozostawiają w wodzie i oddychają przez skrzela lub skórę.
Jeśli nie masz wspólnego kodu między plikami zajęcia , możesz przejść do interfejsu. Interfejs jest bardziej podobny do planu klasy, ponieważ nie ma żadnych nieabstrakcyjnych metod.
Z powyższej treści można było zauważyć kluczową różnicę między klasą abstrakcyjną a interfejsem w . Oznacza to, że w przeciwieństwie do klasy abstrakcyjnej interfejs zapewnia pełne abstrakcja w Javie. Teraz przejdźmy dalej i wymieńmy inne różnice.
Klasa abstrakcyjna a interfejs
W poniższej tabeli wymieniono kluczowe różnice między klasą abstrakcyjną a interfejsem.
Parametr | Klasa abstrakcyjna | Berło |
Implementacja metody domyślnej | Może mieć domyślną implementację metody Samouczek projektowania interfejsu użytkownika w Android Studio | Interfejsy zapewniają czystą abstrakcję i nie mogą mieć żadnej implementacji |
Zmienne | Może zawierać zmienne inne niż końcowe. | Zmienne zadeklarowane w interfejsie są domyślnie końcowe |
Używane słowo kluczowe | Klasę abstrakcyjną można rozszerzyć za pomocą słowa kluczowego „extends | Interfejs powinien być implementowany przy użyciu słów kluczowych ïmplements |
Modyfikatory dostępu | Mogąmają publiczny, chroniony, prywatny i domyślny modyfikator | Metody interfejsu są domyślnie publiczne. nie możesz używać do niego żadnego innego modyfikatora dostępu |
Szybkość wdrożenia | Jest szybszy niż interfejs | Interfejs jest nieco wolniejszy i wymaga dodatkowego pośrednictwa |
Normalna klasa | Może rozszerzać tylko jedną klasę abstrakcyjną | Potrafi implementować wiele interfejsów |
Konstruktorzy | Klasa abstrakcyjna może mieć konstruktory | Interfejs nie może mieć konstruktorów |
Dziedziczenie wielokrotne | Klasa abstrakcyjna może rozszerzać inną klasę i może implementować wiele interfejsów Java | Interfejs może rozszerzyć tylko inny interfejs Java |
Cóż, teraz znasz kluczowe różnice między klasą abstrakcyjną a interfejsem w Javie. Ale jak zdecydujesz, kiedy użyć którego z tych dwóch?
Kiedy używać klasy abstrakcyjnej, a kiedy interfejsu?
Rozważ użycie klas abstrakcyjnych w następujących przypadkach:
- Jeśli masz jakieś pokrewne klasy, które muszą udostępniać rozszerzenie te same wiersze kodu
- Jeśli chcesz zdefiniować pola niestatyczne lub inne niż końcowe
- Kiedy sąmetody lub polalub wymagają modyfikatory dostępu inne niż publiczne (np. chronione i prywatne)
Rozważ użycie interfejsów w następujących przypadkach:
- Kiedy chcesz osiągnąć czysta abstrakcja
- Jeśli chcesz zatrudnić wielokrotność tj.wdrożyć więcej niż jeden interfejs
- Gdy chcesz określić zachowanie określonego typu danych, ale nie martwisz się, kto zaimplementuje jego zachowanie.
To prowadzi nas do końca tego artykułu. Omówiłem jedno z najczęściej zadawanych pytań dotyczących języka Java w wywiadzie, czyli różnicę między klasą abstrakcyjną a interfejsem w Javie.
Upewnij się, że ćwiczysz jak najwięcej i cofnij swoje doświadczenie.
Sprawdź autorstwa Edureka, zaufanej firmy zajmującej się edukacją online, z siecią ponad 250 000 zadowolonych uczniów rozsianych po całym świecie. Jesteśmy tutaj, aby pomóc Ci na każdym etapie Twojej podróży, aby zostać oprócz tych pytań do rozmowy kwalifikacyjnej w języku Java, opracowaliśmy program nauczania przeznaczony dla studentów i profesjonalistów, którzy chcą zostać programistą Java.
co to jest szef kuchni i marionetka
Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy tego „interfejsu mapy java” artykuł, a my skontaktujemy się z Tobą tak szybko, jak to możliwe.