Jaka jest różnica między klasą abstrakcyjną a interfejsem w Javie?



Ten artykuł pomoże ci zrozumieć kluczową różnicę między klasą abstrakcyjną a interfejsem w Javie za pomocą przykładowego programu.

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:





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.