Kuo skiriasi „Java“ santrauka ir sąsaja?



Šis straipsnis padės jums suprasti pagrindinį abstrakčios klasės ir „Java“ sąsajos skirtumą programos pavyzdžio pagalba.

Abstrakčios klasės ir sąsajos yra du pagrindiniai elementaiiš . Nors abu pagrindinai naudojami abstrakcijai, jie labai skiriasi vienas nuo kito ir negali būti naudojami pakaitomis. Šiame straipsnyje išsiaiškinkime, koks skirtumas tarp abstrakčios klasės ir sąsajos „Java“.

Šiame straipsnyje aptariamos šios temos:





Suprasti skirtumus tarp abstrakčios klasės ir sąsajos , turite žinoti, kas yra abstrakti klasė ir kas yra sąsaja. Taigi, pradėkime nuo diskusijos, kas tai yra.

Kas yra abstrakti klasė „Java“?

Bet kuria programavimo kalba abstrakcija reiškia nesvarbių detalių slėpimą nuo vartotojo, kad būtų galima sutelkti dėmesį tik į esmines detales, siekiant padidinti efektyvumą ir taip sumažinti kompleksą. „Java“ abstrakcija pasiekiama naudojant abstrakčios klasės . Abstrakčioje klasėje užfiksuotos bendros poklasių charakteristikos ir joje gali būti abstrakčių metodų, jų gali nebūti. Jo negalima sukurti, bet jo poklasiai gali būti naudojami tik kaip superklasė. Štai programos pavyzdys, demonstruojantis abstrakčią klasę:



Pastaba: An abstraktus metodas , yra metodas, kuris nėra įdiegtas vietoje, ir pridurianeišsamumas klasė .

paketas „MyPackage“ // abstrakčios klasės abstrakti klasė Gyvūnas {String AnimalName = '' Animal (String name) {this.AnimalName = name} // paskelbti ne abstrakčius metodus // jis turi numatytąjį diegimą public void BasicInfo (String details) {System. out.println (this.AnimalName + '' + išsami informacija)} // abstraktūs metodai, kuriuos // įgyvendins jo poklasis (-iai) abstrakti viešoji tuštuma buveinė () abstraktus viešas tuštumas kvėpavimas ()} klasė Sausumos tęsiasi Gyvūnas {// konstruktorius antžeminis (eilutės pavadinimas) {super (vardas)} @Paisyti viešą tuštumą buveinę () {System.out.println ('palikti sausumoje ir')} @Apaisyti viešą tuštumą () {System.out.println ('kvėpuoti per plaučius ar trachėją. ')}} Vandens klasė pratęsia gyvūną {// konstruktorius Vandeninis (Stygos pavadinimas) {super (vardas)} @Paisyti viešo tuštumo buveinę () {System.out.println (' Jis palieka vandenyje ir ') } @Paisyti viešo tuščio kvėpavimo () {System.out.println ('kvėpuoti per žiaunas ar jų odą.')}} Klasė AbstractClassDemo {public static voi d main (String [] args) {// sukuriant žemės objekto objektą // ir naudojant gyvūnų klasės nuorodą. Gyvūno objektas1 = naujas antžeminis („Žmonių“) objektas1.BasicInfo ('yra antžeminės būtybės, jie') object1.habitat () object1.respiration () System.out.println ('') // sukuriant rato klasės „Animal“ objektus object2 = naujas vandens objektas ('Fishes') object2.BasicInfo ('jie yra vandens būtybės, jie') object2.habitat () object2.respiration ()}}

Rezultatas

Žmonės yra antžeminės būtybės, jos palieka sausumoje ir kvėpuoja per plaučius ar trachėją. Žuvys yra vandens būtybės, jos palieka vandenį ir kvėpuoja per žiaunas ar jų odą.

The Pagrindinė informacija () yra metodas, kuriuo dalijasi Sausumos ir Vandeninis klasės. Nuo Gyvūnų klasė negalima inicijuoti, mes kuriame objektus Sausumos ir Vandeninis užsiėmimai programavimo tikslais. Toliau turime sąsajas.



Sąsaja „Java“

Kitas būdas pasiekti abstrakcija Java yra naudojant sąsajos .Sąsaja yra abstrakčių metodų rinkinys, ji neturi jokio konkretaus , skirtingai nuo abstrakčios klasės. Tačiau, skirtingai nuo abstrakčios klasės, sąsaja suteikia visišką „Java“ abstrakciją. Jis gali turėti ir metodus, ir kintamuosius, kaip ir klasė. Tačiau sąsajoje deklaruojami metodai pagal nutylėjimą yra abstraktūs.Štai an demonstruojanti abstrakčią klasę:

paketas „MyPackage“ sąsaja Gyvūnai {// abstraktūs metodai void buveinė () negaliojantis kvėpavimas ()} klasė „TerrestrialA“ įgyvendina gyvūnus {String AnimalName = '' // konstruktorius TerrestrialA (String name) {this.AnimalName = name} @Paisyti viešų negaliojančių buveinių () {System.out.println (this.AnimalName + 'palikti sausumoje ir')} @Paisyti viešą tuštumą () {System.out.println ('kvėpuoti per plaučius ar trachėją.')}}} „AquaticA“ klasė įgyvendina gyvūnus {String AnimalName = '' // konstruktorius AquaticA (String name) {this.AnimalName = name} @Paisyti viešų negaliojančių buveinių () {System.out.println (this.AnimalName + 'palikti vandenyje ir')} @Paisyti viešų niekinių kvėpavimą () {System.out.println ('kvėpuoti per žiaunas ar jų odą.')}} Klasė JavaInterfaceDemo {public static void main (String [] argumentai) {// sukuriant Žemės objekto objektą // ir naudojant gyvūnų klasės nuorodą . Gyvūnai object1 = new TerrestrialA ('Žmonės') object1.habitat () object1.respiration () System.out.println ('') // sukuriant apskritimo klasės gyvūnus Objects objektai2 = new AquaticA ('Žuvys') object2.habitat () object2.respiration ()}}

Rezultatas

Žmonės palieka sausumą ir kvėpuoja per plaučius ar trachėją. Žuvys palieka vandenį ir kvėpuoja per žiaunas ar jų odą.

Jei neturite bendro kodo tarp savo klasės , tada galite kreiptis į sąsają. Sąsaja yra labiau panaši į klasės projektą, nes joje nėra jokių abstrakčių metodų.

Iš aukščiau pateikto turinio galbūt pastebėjote pagrindinį skirtumą tarp abstrakčios klasės ir sąsajos . Skirtingai nuo abstrakčios klasės, sąsaja suteikia pilną abstrakcija Java kalba. Dabar eikime į priekį ir išvardinkime kitus skirtumus.

kaip naudoti parametrus lentoje

Santrauka „Klasė ir sąsaja“

Žemiau esančioje lentelėje išvardyti pagrindiniai abstrakčios klasės ir sąsajos skirtumai.

Parametras Anotacija Sąsaja

Numatytasis metodo įgyvendinimas

Tai gali būti numatytasis metodo įgyvendinimas

Sąsajos suteikia gryną abstrakciją ir jų visiškai negalima įgyvendinti

Kintamieji

Jame gali būti ne galutinių kintamųjų.

Sąsajoje deklaruojami kintamieji pagal nutylėjimą yra galutiniai

Raktinis žodis naudojamas

Abstrakti klasė gali būti pratęsta naudojant raktinį žodį „tęsiasi

Sąsaja turėtų būti įdiegta naudojant raktinių žodžių priedus

Prieigos modifikatoriai

Galiturėti viešąjį, saugomą, privatų ir numatytąjį modifikatorių

Sąsajos metodai pagal nutylėjimą yra vieši. su juo negalite naudoti jokio kito prieigos modifikatoriaus

„mysql“ pamoka pradedantiesiems su pavyzdžiais

Įgyvendinimo greitis

Tai greitesnė nei sąsaja

Sąsaja yra šiek tiek lėtesnė ir reikalauja papildomo nukreipimo

Normali klasė

Tai gali išplėsti tik vieną abstrakčią klasę

Gali įdiegti kelias sąsajas

Konstruktoriai

Abstrakti klasė gali turėti konstruktorius

Sąsajoje negali būti konstruktorių

Daugkartinis paveldėjimas

Abstrakti klasė gali išplėsti kitą klasę ir gali įdiegti kelias „Java“ sąsajas

Sąsaja gali išplėsti tik kitą „Java“ sąsają

Na, dabar jūs pateikiate pagrindinius abstrakčios klasės ir „Java“ sąsajos skirtumus. Bet kaip nuspręsti, kada naudoti kurį iš šių dviejų?

Kada naudoti abstrakčią klasę ir kada naudoti sąsają?

Apsvarstykite galimybę naudoti abstrakčias klases šiais atvejais:

  • Jei turite keletą susijusių klasių, kuriomis reikia dalytis tos pačios kodo eilutės
  • Kai norite apibrėžti ne statiniai ar ne galutiniai laukai
  • Kai jų yrametodai ar laukaiarba reikalauti prieigos modifikatoriai išskyrus viešus (pvz., saugomos ir privačios)

Apsvarstykite galimybę naudoti sąsajas šiais atvejais:

  • Kai nori pasiekti gryna abstrakcija
  • Jei norite įdarbinti daugkartinis , t.y,įdiegti daugiau nei vieną sąsają
  • Kai norite nurodyti konkretaus duomenų tipo elgseną, bet nesijaudinate dėl to, kas įgyvendina jo elgesį.

Tai priveda prie šio straipsnio pabaigos. Interviu aptariau vieną iš dažniausiai užduodamų „Java“ klausimų, tai yra skirtumas tarp abstrakčios klasės ir „Java“ sąsajos.

Įsitikinkite, kad praktikuojate kuo daugiau ir grąžinkite savo patirtį.

Patikrinkite sukūrė patikima internetinė mokymosi įmonė „Edureka“, turinti daugiau nei 250 000 patenkintų besimokančiųjų tinklą visame pasaulyje. Mes esame čia, kad padėtume jums kiekviename jūsų kelionės žingsnyje, kad taptume be šių „Java“ interviu klausimų, mes parengėme mokymo programą, skirtą studentams ir specialistams, norintiems būti „Java“ kūrėjais.

Turite mums klausimą? Prašau tai paminėti šios „java žemėlapio sąsajos“ komentarų skyriuje straipsnį ir mes kuo greičiau susisieksime su jumis.