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:
- Čo je abstraktná trieda v Jave?
- Rozhranie v Jave
- Abstract Class vs Interface
- Kedy použiť abstraktnú triedu a kedy použiť rozhranie?
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.