Kāda ir atšķirība starp Java abstrakto klasi un saskarni?



Šis raksts palīdzēs jums izprast galveno atšķirību starp abstrakto klasi un interfeisu java, izmantojot programmas paraugu.

Abstraktās klases un saskarnes ir divi galvenie pamatelementino . Lai gan abus galvenokārt izmanto abstrakcijai, tie ļoti atšķiras viens no otra un tos nevar aizstāt. Šajā rakstā izdomāsim, kāda ir atšķirība starp Java abstrakto klasi un saskarni.

Šajā rakstā aplūkotās tēmas ir šādas:





Lai saprastu atšķirības starp abstrakto klasi un interfeisu , jums jāzina, kas ir abstrakta klase un kāda ir saskarne. Tātad, sāksim ar diskusiju par to, kas tie ir.

Kas ir Java abstraktā klase?

Jebkurā programmēšanas valodā abstrakcija nozīmē slēpt no lietotāja neatbilstošās detaļas, lai koncentrētos tikai uz būtiskām detaļām, lai palielinātu efektivitāti, tādējādi samazinot sarežģītību. Java valodā abstrakcija tiek panākta, izmantojot abstraktas nodarbības . Abstraktā klase aptver apakšklases kopīgās īpašības un var saturēt vai neietvert kādu abstraktu metodi. To nevar instancēt, bet apakšklasēs to var izmantot tikai kā superklasi. Lūk, programmas piemērs, kas demonstrē abstrakto klasi:



Piezīme: An abstrakta metode , ir metode, kas netiek ieviesta vietā, un papildinanepilnība klasē .

pakete MyPackage // abstrakta klase abstrakta klase Dzīvnieks {String AnimalName = ''Animal (String name) {this.AnimalName = name} // deklarēt ne-abstraktas metodes // tai ir noklusējuma ieviešana public void BasicInfo (String details) {System. out.println (this.AnimalName + '' + details)} // abstraktas metodes, kuras // ieviesīs tās apakšklase (-as) abstrakts public void biotops () abstraktā public void elpošana ()} klase Terrestrial extends Animal {// konstruktors Terrestrial (virknes nosaukums) {super (name)} @Orride public void biotops () {System.out.println ('atvaļinājums uz zemes un')} @Override public void elpošana () {System.out.println ('respire caur plaušām vai traheju. ')}} klase Ūdens izstiepjas Dzīvnieks {// konstruktors Ūdens (Stīgas nosaukums) {super (vārds)} @ Pārvarēt publisko tukšo biotopu () {System.out.println (' Tas atstāj ūdenī un ') } @Orride public void respiration () {System.out.println ('elpot caur žaunām vai to ādu.')}} Klase AbstractClassDemo {public static voi d main (String [] args) {// zemes objekta objekta izveide // un dzīvnieku atsauces izmantošana. Dzīvnieku objekts1 = jauns sauszemes (“Cilvēks”) objekts1.BasicInfo (“viņi ir sauszemes būtnes”) object1.habitat () object1.respiration () System.out.println ('') // izveidojot apļa klases Animal objektus object2 = jauns ūdens objekts ('Zivis') object2.BasicInfo ('viņi ir ūdensvada būtnes') object2.habitat () object2.respiration ()}}

Rezultāts

Cilvēki ir sauszemes būtnes, viņi atstāj sauszemi un elpo caur plaušām vai traheju. Zivis ir ūdens dzīvnieki, tās atstāj ūdenī un elpo caur žaunām vai to ādu.

The BasicInfo () ir metode, kuru koplieto Zemes un Ūdens klases. Kopš Dzīvnieku klase nevar sākt, mēs veidojam objektus Zemes un Ūdens nodarbības programmēšanas vajadzībām. Tālāk mums ir saskarnes.



Saskarne Java

Vēl viens veids, kā sasniegt abstrakcija Java ir, izmantojot saskarnes .Interfeiss ir abstraktu metožu kopums, tam nav konkrētu , atšķirībā no abstraktās klases. Bet atšķirībā no abstraktās klases saskarne nodrošina pilnīgu Java abstrakciju. Tam var būt gan metodes, gan mainīgie tāpat kā klase. Tomēr saskarnē deklarētās metodes pēc noklusējuma ir abstraktas.Lūk demonstrējot abstrakto klasi:

pakete MyPackage interfeiss Dzīvnieki {// abstraktās metodes void biotops () void respiration ()} klase TerrestrialA īsteno Dzīvnieki {String AnimalName = '' // konstruktors TerrestrialA (String name) {this.AnimalName = name} @Override public void biotops () {System.out.println (this.AnimalName + 'atvaļinājums uz sauszemes un')} @Orride public void respiration () {System.out.println ('elpot caur plaušām vai traheju.')}}} Klases AquaticA īsteno dzīvniekus {virkne AnimalName = '' // konstruktors AquaticA (virknes nosaukums) {this.AnimalName = name} @Orride public void biotops () {System.out.println (this.AnimalName + 'atstāt ūdenī un')} @Override public void respiration () {System.out.println ('elpot caur žaunām vai to ādu.')}} Klase JavaInterfaceDemo {public static void main (String [] args) {// zemes objekta objekta izveide // un dzīvnieku klases atsauces izmantošana . Dzīvnieki object1 = new TerrestrialA ('Cilvēki') object1.habitat () object1.respiration () System.out.println ('') // izveidojot apļa klases Dzīvnieki objektus object2 = new AquaticA ('Zivis') object2.habitat () object2.respiration ()}}

Rezultāts

Cilvēki atstāj sauszemi un elpo caur plaušām vai traheju. Zivis atstāj ūdenī un elpo caur žaunām vai to ādu.

Ja starp jūsu kodu nav kopīga koda klases , tad jūs varat doties uz interfeisu. Saskarne ir vairāk kā klases projekts, jo tajā nav nekādu abstraktu metožu.

No iepriekš minētā satura jūs, iespējams, pamanījāt galveno atšķirību starp abstrakto klasi un saskarni . Kas, atšķirībā no abstraktās klases, saskarne nodrošina pilnu abstrakcija Java valodā. Tagad turpināsim un uzskaitīsim citas atšķirības.

Abstrakta klase vs saskarne

Zemāk esošajā tabulā ir uzskaitītas galvenās atšķirības starp abstrakto klasi un saskarni.

Parametrs Abstrakta klase Saskarne

Noklusējuma metodes ieviešana

Tam var būt noklusējuma metodes ieviešana

Saskarnes nodrošina tīru abstrakciju, un to vispār nevar īstenot

Mainīgie

Tas var saturēt galīgos mainīgos.

Interfeisā deklarētie mainīgie pēc noklusējuma ir galīgi

Izmantotais atslēgvārds

Abstraktu klasi var paplašināt, izmantojot atslēgvārdu “paplašina

Saskarne jāievieš, izmantojot atslēgvārdu papildinājumus

Piekļuves modifikatori

Varir publisks, aizsargāts, privāts un noklusējuma modifikators

Saskarnes metodes pēc noklusējuma ir publiskas. ar to nevar izmantot nevienu citu piekļuves modifikatoru

Īstenošanas ātrums

Tas ir ātrāks nekā interfeiss

Saskarne ir nedaudz lēnāka, un tai ir nepieciešama papildu virziena maiņa

Normāla klase

Tas var paplašināt tikai vienu abstraktu klasi

ko tostring nozīmē java

Var ieviest vairākas saskarnes

Konstruktori

Abstraktai klasei var būt konstruktori

Saskarnei nevar būt konstruktoru

Daudzkārtējs mantojums

Abstrakta klase var paplašināt citu klasi un var ieviest vairākas Java saskarnes

Saskarne var paplašināt tikai citu Java saskarni

Nu, tagad jūs galvenās atšķirības starp abstrakto klasi un saskarni Java. Bet kā jūs izlemjat, kad kuru no šiem diviem izmantot?

Kad lietot abstrakto klasi un kad interfeisu?

Apsveriet iespēju izmantot abstraktas klases šādos gadījumos:

  • Ja jums ir dažas saistītas klases, kurām ir jāpiedalās tās pašas koda rindas
  • Kad vēlaties definēt lauki, kas nav statiski vai galīgi
  • Kad irmetodes vai laukivai pieprasīt piekļuves modifikatori kas nav publisks (piemēram, aizsargāti un privāti)

Apsveriet iespēju izmantot saskarnes šādos gadījumos:

  • Kad vēlaties sasniegt tīra abstrakcija
  • Ja vēlaties nodarbināt vairākkārtējs , ti,ieviest vairāk nekā vienu saskarni
  • Ja vēlaties norādīt konkrēta datu veida darbību, bet neuztraucieties par to, kurš īsteno tā darbību.

Tas mūs noved pie šī raksta beigām. Intervijā esmu apskatījis vienu no visbiežāk uzdotajiem Java jautājumiem, kas ir atšķirība starp abstrakto klasi un Java saskarni.

Pārliecinieties, ka pēc iespējas vairāk praktizējat un atgriezieties pie pieredzes.

Pārbaudiet Autors: Edureka, uzticams tiešsaistes mācību uzņēmums ar vairāk nekā 250 000 apmierinātu izglītojamo tīklu visā pasaulē. Mēs esam šeit, lai palīdzētu jums katrā solī jūsu ceļojumā, lai kļūtu par papildus šiem Java intervijas jautājumiem, mēs piedāvājam mācību programmu, kas paredzēta studentiem un profesionāļiem, kuri vēlas būt Java izstrādātāji.

Vai mums ir jautājums? Lūdzu, pieminējiet to šīs ‘Java kartes saskarnes’ komentāru sadaļā rakstu, un mēs pēc iespējas ātrāk sazināsimies ar jums.