Aký je rozdiel medzi abstraktnou triedou a rozhraním v Jave?



Tento článok vám pomôže pochopiť kľúčový rozdiel medzi abstraktnou triedou a rozhraním v jave pomocou ukážkového programu.

Abstraktné triedy a rozhrania sú dva hlavné stavebné prvkyz . Aj keď sa obe primárne používajú na abstrakciu, navzájom sa veľmi líšia a nemožno ich zameniť. V tomto článku poďme zistiť, aký je rozdiel medzi abstraktnou triedou a rozhraním v Jave.

V tomto článku sa diskutuje o týchto témach:





Pochopiť rozdiely medzi abstraktnou triedou a rozhraním v , musíte vedieť, čo je abstraktná trieda a čo je rozhranie. Začnime teda diskusiou o tom, čo to je.

Čo je abstraktná trieda v Jave?

V ktoromkoľvek programovacom jazyku abstrakcia znamená skrývanie nepodstatných detailov pred používateľom, aby sa sústredili iba na nevyhnutné detaily a zvýšili tak efektivitu a znížili tak zložitosť. V Jave sa abstrakcia dosahuje pomocou abstraktné triedy . Abstraktná trieda zachytáva spoločné charakteristiky podtried a môže alebo nemusí obsahovať žiadnu abstraktnú metódu. Nemožno ho vytvoriť inštanciou, ale je možné ho použiť iba ako nadtriedu v jeho podtriedach. Tu je príklad programu demonštrujúceho abstraktnú triedu:



Poznámka: An abstraktná metóda , je metóda, ktorá nie je implementovaná na danom mieste a dodávaneúplnosť k trieda .

balíček MyPackage // abstraktná trieda abstraktná trieda Zviera {String AnimalName = '' Zviera (Názov reťazca) {this.AnimalName = name} // deklarovať neabstraktné metódy // má predvolenú implementáciu public void BasicInfo (Podrobnosti reťazca) {Systém. out.println (this.AnimalName + '' + podrobnosti)} // abstraktné metódy, ktoré budú // implementované jeho podtriedami abstraktné verejné neplatné prostredie () abstraktné verejné neplatné dýchanie ()} trieda Pozemné rozširuje Zviera {// konštruktér Terrestrial (názov reťazca) {super (názov)} @Override verejné neplatné prostredie () {System.out.println ('nechať na súši a')} @Override verejné neplatné dýchanie () {System.out.println ('respire) cez pľúca alebo priedušnicu. ')}} trieda Aquatic rozširuje Animal {// konštruktor Aquatic (názov reťazca) {super (názov)} @Override public void habitat () {System.out.println (' Leave in water and ') } @Override public void respiration () {System.out.println ('dýchať cez žiabre alebo ich kožu.')}} Trieda AbstractClassDemo {verejné statické voi d main (String [] args) {// vytvorenie objektu terestriálnej triedy // a použitie odkazu na zvieraciu triedu. Zviera object1 = new Terrestrial ('Humans') object1.BasicInfo ('are terrestrial beings, they') object1.habitat () object1.respiration () System.out.println ('') // creating the Objects of circle class Animal object2 = new Aquatic ('Fishes') object2.BasicInfo ('are aqautic beings, they') object2.habitat () object2.respiration ()}}

Výkon

Ľudia sú pozemské bytosti, opúšťajú pevninu a dýchajú pľúcami alebo priedušnicou. Ryby sú vodné bytosti, ktoré nechávajú vo vode a dýchajú cez žiabre alebo kožu.

The Základné informácie () je metóda zdieľaná používateľom Pozemské a Vodné triedy. Odkedy Trieda zvierat nie je možné iniciovať, vytvárame objekty Pozemské a Vodné triedy na programovacie účely. Ďalej tu máme rozhrania.



Rozhranie v Jave

Ďalším spôsobom dosiahnutia abstrakcia v Jave je pomocou rozhrania .Rozhranie je súborom abstraktných metód, nemá nič konkrétne , na rozdiel od abstraktnej triedy. Ale na rozdiel od abstraktnej triedy, rozhranie poskytuje úplnú abstrakciu v Jave. Môže mať metódy aj premenné rovnako ako trieda. Metódy deklarované v rozhraní sú však predvolene abstraktné.Tu je predvádzanie abstraktnej triedy:

balíček Rozhranie MyPackage Zvieratá {// abstraktné metódy void habitat () void dýchanie ()} trieda TerrestrialA implementuje Animals {String AnimalName = '' // konštruktor TerrestrialA (názov reťazca) {this.AnimalName = name} @Override public void habitat () {System.out.println (this.AnimalName + 'leave on land and')} @Override public void respiration () {System.out.println ('dýchať cez pľúca alebo priedušnicu.')}} Trieda AquaticA implementuje Animals {String AnimalName = '' // konštruktor AquaticA (názov reťazca) {this.AnimalName = name} @Override public void habitat () {System.out.println (this.AnimalName + 'leave in water and')} @Override public void respiration () {System.out.println ('dýchajte cez žiabre alebo ich kožu.')}} Trieda JavaInterfaceDemo {public static void main (String [] args) {// vytvorenie objektu terestriálnej triedy // a použitie odkazu na zvieraciu triedu . Zvieratá object1 = new TerrestrialA ('Humans') object1.habitat () object1.respiration () System.out.println ('') // create the Objects of circle class Animals object2 = new AquaticA ('Fishes') object2.habitat () object2.respiration ()}}

Výkon

Ľudia odchádzajú na pevninu a dýchajú pľúcami alebo priedušnicou. Ryby odchádzajú vo vode a dýchajú cez žiabre alebo ich kožu.

Ak nemáte žiadny spoločný kód medzi triedy , potom môžete prejsť na rozhranie. Rozhranie pripomína skôr plán triedy, pretože nemá žiadne neabstraktné metódy.

Z vyššie uvedeného obsahu ste si mohli všimnúť kľúčový rozdiel medzi abstraktnou triedou a rozhraním v . Čo je na rozdiel od abstraktnej triedy rozhranie plné abstrakcia v Jave. Teraz poďme a vymenujme ďalšie rozdiely.

ako previesť desatinné číslo na binárne v pythone -

Abstract Class vs Interface

V nasledujúcej tabuľke sú uvedené kľúčové rozdiely medzi abstraktnou triedou a rozhraním.

Parameter Abstraktná trieda Rozhranie

Predvolená implementácia metódy

Môže mať predvolenú implementáciu metódy

Rozhrania poskytujú čistú abstrakciu a implementáciu vôbec nemôžu mať

Premenné

Môže obsahovať nekoncové premenné.

Premenné deklarované v rozhraní sú predvolene konečné

Použité kľúčové slovo

Abstraktnú triedu je možné rozšíriť pomocou kľúčového slova „extends

Rozhranie by sa malo implementovať pomocou kľúčových slov ïmplements

Modifikátory prístupu

Môcťmať verejný, chránený, súkromný a predvolený modifikátor

Metódy rozhrania sú predvolene verejné. s ním nemôžete použiť žiadny iný modifikátor prístupu

návod na integráciu serverov sql

Rýchlosť implementácie

Je rýchlejší ako rozhranie

Rozhranie je o niečo pomalšie a vyžaduje ďalšie smerovanie

Normálna trieda

Môže rozšíriť iba jednu abstraktnú triedu

Môže implementovať viac rozhraní

Konštruktéri

Abstraktná trieda môže mať konštruktory

Rozhranie nemôže mať konštruktory

Viacnásobné dedičstvo

Abstraktná trieda môže rozšíriť ďalšiu triedu a môže implementovať viac rozhraní Java

Rozhranie môže rozšíriť iba ďalšie rozhranie Java

No, teraz máte kľúčové rozdiely medzi abstraktnou triedou a rozhraním v Jave. Ako sa ale rozhodnúť, kedy ktorú z týchto dvoch možností použiť?

Kedy použiť abstraktnú triedu a kedy použiť rozhranie?

Zvážte použitie abstraktných tried v nasledujúcich prípadoch:

  • Ak máte súvisiace triedy, ktoré je potrebné zdieľať rovnaké riadky kódu
  • Ak chcete definovať nestatické alebo nekoncové polia
  • Keď súmetódy alebo poliaalebo vyžadovať modifikátory prístupu iné ako verejné (napríklad chránené a súkromné)

Zvážte použitie rozhraní v nasledujúcich prípadoch:

  • Keď chcete dosiahnuť čistá abstrakcia
  • Ak chcete zamestnať viacnásobný tjimplementovať viac ako jedno rozhranie
  • Keď chcete určiť správanie konkrétneho dátového typu, ale nemáte obavy z toho, kto implementuje jeho správanie.

Týmto sa dostávame na koniec tohto článku. V Interview som sa venoval jednej z najčastejšie kladených otázok týkajúcich sa Javy, ktorou je rozdiel medzi abstraktnou triedou a rozhraním v Jave.

Určite cvičte čo najviac a obráťte sa na svoje skúsenosti.

Pozrite sa na autor: Edureka, dôveryhodná online vzdelávacia spoločnosť so sieťou viac ako 250 000 spokojných študentov rozmiestnených po celom svete. Sme tu, aby sme vám pomohli na každom kroku na vašej ceste. Okrem otázok týkajúcich sa tohto rozhovoru pre jazyk java vymyslíme učebný plán určený pre študentov a profesionálov, ktorí chcú byť vývojármi v prostredí Java.

Máte na nás otázku? Uveďte to v sekcii komentárov tohto „rozhrania mapy Java“. článok a my sa vám ozveme čo najskôr.