what is abstraction java learn with examples
Ta vadnica pojasnjuje, kaj je abstrakcija v Javi, skupaj s primeri programiranja. Naučili se boste tudi, kaj je abstraktni tečaj in zakaj se uporablja:
V tej seriji JAVA bomo razpravljali o pomembnih značilnostih objektno usmerjenega programiranja (OOP), ki so znani tudi kot štirje stebri, tj. Abstrakcija, enkapsulacija, dedovanje in polimorfizem.
Prvi steber OOP je 'Abstrakcija'. 'Abstrakcija je postopek izbire podatkov, da se uporabniku prikažejo samo ustrezne informacije.'
=> Tu si oglejte Vodnik za začetnike Java.
kako najti datoteke apk na tabličnem računalniku android
Kaj se boste naučili:
Abstrakcija v OOP
Preprosto povedano, abstrakcija 'prikaže' samo ustrezne atribute predmetov in 'skrije' nepotrebne podrobnosti.
Na primer ko vozimo avtomobil, nas skrbi samo vožnja avtomobila, kot je zagon / zaustavitev avtomobila, pospeševanje / lomljenje itd. Ne skrbi nas, kako dejansko deluje mehanizem za zagon / zaustavitev ali postopek pospeševanja / zaviranja. Te podrobnosti nas preprosto ne zanimajo.
Zaskrbljeni smo zaradi 'abstraktnega' pogleda na te operacije, ki nam bo pomagal poganjati avto naprej in doseči cilj. To je preprost primer abstrakcije.
Tako ima avto vse mehanizme in procese na mestu, toda z vidika končnega uporabnika, torej z vidika voznika avtomobila, ga bo zanimal le abstraktni pogled na te procese.
Abstrakcija zmanjša prizadevanja pri programiranju in s tem zapletenost. Končnega uporabnika, ki uporablja aplikacijo, ni treba skrbeti, kako je določena funkcija izvedena. Po potrebi lahko uporablja funkcije.
Tako se v abstrakciji ukvarjamo z idejami in ne z dogodki. To pomeni, da podrobnosti izvedbe pred uporabnikom skrijemo, končnemu uporabniku pa izpostavimo samo funkcionalnost. Tako bo uporabnik le vedel 'kaj počne' in ne 'kako to počne'.
Abstrakcija v OOP je lahko dve vrsti.
# 1) Odvzem podatkov
Pri abstrakciji podatkov večinoma ustvarjamo zapletene vrste podatkov in skrivamo njihovo izvedbo. Izpostavimo samo operacije manipulacije s temi vrstami podatkov, ne da bi se spuščali v podrobnosti njihove izvedbe.
Ena od prednosti tega pristopa je, da lahko kadar koli spremenimo izvedbo, ne da bi spremenili vedenje, ki je izpostavljeno uporabniku.
# 2) Nadzor abstrakcije
Kontrolna abstrakcija zbere vse kontrolne izjave, ki so del aplikacije, in jih izpostavi kot enoto. Ta funkcija se uporablja, kadar moramo s to krmilno enoto izvesti delujočo funkcijo.
Krmilna abstrakcija je glavna enota strukturiranega programiranja in z uporabo abstrakcije krmiljenja lahko zapletene okvire določimo enostavne funkcije.
Kaj je abstrakcija v Javi
Ker je Java jezik OOP, lahko na abstrakcijo gledamo kot na eno izmed pomembnih lastnosti in gradnikov jezika Java. V Javi se abstrakcija izvaja z abstraktnim razredom in vmesnikom.
Kako torej uporabiti abstrakcijo v Javi? Java ponuja modifikator 'abstrakt', ki nima dostopa, za izvajanje abstrakcije. Ta abstraktni modifikator se lahko uporablja z razredi in metodami, ne pa tudi s spremenljivkami.
Vmesnik zagotavlja popolno abstrakcijo, tj.navede samo prototipe metod, ne pa tudi njihovo izvedbo. Abstraktni razred zagotavlja delno abstrakcijo, pri čemer vsaj ene metode ne bi smeli izvajati.
V tej vadnici bomo podrobno razpravljali o abstrakciji z abstraktnimi razredi. V nadaljnjih vajah bomo podrobno raziskali vmesnike.
Primer abstrakcije Java
Oglejmo si spodnji primer.
//abstract class abstract class Car{ abstract void accelerate(); } //concrete class class Suzuki extends Car{ void accelerate(){ System.out.println('Suzuki::accelerate'); } } class Main{ public static void main(String args()){ Car obj = new Suzuki(); //Car object =>contents of Suzuki obj.accelerate(); //call the method } }
Izhod:
Preprost primer abstrakcije, ki je naveden zgoraj, ima razred Car. V tem razredu Car imamo abstraktno metodo pospeševanja (). Potem podedujemo ta razred v razredu Suzuki. V razredu Suzuki izvajamo metodo pospeševanja.
Zgornji primer preprosto prikazuje način definiranja, dedovanja in uporabe abstraktnega razreda v programu.
Kaj je abstraktni razred Java
Omenili smo že, da Java izvaja abstrakcijo z uporabo abstraktnih razredov in vmesnikov. Najprej raziščimo vse o abstraktnem pouku.
Abstraktni razred lahko definiramo kot razred, razglašen s ključno besedo »abstraktno«, in ima omejitev, da ga ni mogoče ustvariti.
Abstraktni razred lahko vsebuje ali ne abstraktno metodo (metoda brez izvedbe). Kar zadeva JVM, je abstraktni razred nepopoln razred, ki nima popolnega vedenja.
Splošna sintaksa abstraktnega razreda je podana spodaj:
abstract class { public abstract void abstractMethod(); public void normalMethod() { //method body } }
Kot je prikazano v sintaksi zgornjega abstraktnega razreda, imamo lahko v abstraktnem razredu abstraktne in neabstraktne metode. Ključna beseda 'povzetek' je pred izjavo razreda.
Na kratko lahko abstraktni razred opišemo, kot je prikazano spodaj.
Povzetek metode v Javi
Abstraktna metoda je metoda pred ključno besedo 'abstraktna' brez kakršne koli izvedbe. Abstraktna metoda je razglašena znotraj abstraktnega razreda.
Abstraktna metoda je tista, zaradi katere je razred nepopoln, saj nima izvedbe. Ko torej v razred vključimo abstraktno metodo, razred seveda postane nepopoln.
Abstraktno metodo lahko uporabimo tako, da jo implementiramo v podrazred, tj.razred podeduje abstraktni razred in nato implementira ali zagotovi kodo za vse abstraktne metode, prijavljene v abstraktnem razredu, tako da jih preglasi.
Tako postane obvezna preglasitev abstraktne metode v podrazredu. Če tudi abstraktna metoda ni implementirana v podrazred, moramo podrazred razglasiti tudi kot »abstraktno«.
Splošna izjava abstraktne metode je:
povzetek praznino methodName (parameter_list);
Med pisanjem abstraktne metode si moramo zapomniti naslednja pravila:
- Razred, ki vsebuje eno ali več abstraktnih metod, je abstraktni razred.
- Nekaterih drugih ključnih besed ne bi smeli uporabljati z abstraktno ključno besedo.
Tako so naslednje kombinacije v Javi nezakonite.
- dokončno
- abstraktno domorodno
- abstraktna statika
- povzetek zasebno
- povzetek sinhroniziran
- povzetek strogafp
Izvedimo primer abstraktnega razreda in abstraktne metode.
//abstract class abstract class Bank{ abstract int getInterestRate(); } //concrete class class Citi extends Bank{ int getInterestRate(){return 7;} } //concrete class class HSBC extends Bank{ int getInterestRate(){return 6;} } class Main{ public static void main(String args()){ Bank b; b = new Citi (); // concrete class object System.out.println('Citi Rate of Interest is: '+b.getInterestRate()+'%'); b = new HSBC (); // concrete class object System.out.println('HSBC Rate of Interest is: '+b.getInterestRate()+'%'); } }
Izhod:
V zgornjem primeru imamo razred Bank. V tem razredu imamo abstraktno metodo, getInterestRate (). Nato prijavimo dva razreda - ICICI in BOI, ki podedujeta iz razreda Bank. Oba razreda izvajata metodo getInterestRate () z vrnitvijo ustreznih obrestnih mer.
Nato v glavni metodi ustvarimo bančni objekt. Najprej bančni objekt vsebuje predmet razreda ICICI in prikazuje obrestno mero. Nato se ustvari objekt BOI in prikaže obrestno mero.
Tako lahko domnevamo, da je razred banke nekakšna skica ali struktura, ki nam omogoča, da dobimo obrestno mero. Iz te strukture lahko ustvarimo toliko konkretnih razredov, kolikor želimo, nato pa dobimo ustrezne obrestne mere za vsak bančni objekt (to je prikazano v glavni metodi).
Kakšna je uporaba abstraktnega predavanja v Javi
Zakaj uporabljamo abstraktni razred, če v resnici nima nobene lastne izvedbe?
Skupaj z odgovorom na zgornje vprašanje bomo v primeru, ki sledi, ponazorili tudi, kako uporabiti abstraktni razred.
Oglejmo si primer vozil. Vemo, da so vozila lahko različnih vrst. Lahko imamo avtomobile, skuterje, kolesa, mopede, avtobuse itd. Čeprav obstaja veliko vrst vozil, imajo nekatere lastnosti ali lastnosti, ki so skupne vsem vozilom, ne glede na njihovo vrsto.
Na primer vsako vozilo ima model, številko šasije, barvo itd. Vsako od njih ima funkcije, kot so zagon, zaustavitev, pospeševanje, zaviranje itd. Zdaj ima vsako vozilo zgoraj navedene lastnosti in metode, ki so skupne tudi ostalim. Hkrati kot uporabnik vozila nas nekateri vidiki morda ne bodo zanimali.
Na primer če se oseba vozi z avtomobilom, jo bo zanimalo le zagon in ustavitev vozila ali pospeševanje ali zaviranje vozila. Ne bo ga zanimalo, kako se vozilo zažene ali ustavi. Zanima nas samo abstraktno delovanje funkcij, ne pa tudi njihove podrobnosti.
Če želimo zgornji primer sistema predstaviti v programski aplikaciji, kako ga potem zasnovati? Najprej bomo izvedli nekaj abstrakcije. Zdaj vemo, da so nekatere funkcije pogoste, vendar bo izvedba teh funkcij odvisna od posameznega modela.
Za začetek razglasimo abstraktni razred »Vozilo«.
Ta sistem smo prikazali spodaj:
Tako bomo imeli abstraktni razred Vozilo in obstajal bo konkreten razred, ki predstavlja vsak model vozila. Za ponazoritev smo uporabili le tri modele, to so avto, kolo in skuter.
Spodaj je hierarhija razredov iz zgornjega sistema.
abstract class Vehicle{ abstract void start () ; abstract void stop (); abstract void accelerate (); abstract void brake (); } class Car extends Vehicle{ void start () { //code here…} void stop () { //code here…} void accelerate () { //code here…} void brake () { //code here…} } class Bike extends Vehicle{ void start () { //code here…} void stop () { //code here…} void accelerate () { //code here…} void brake () { //code here…} } class Scooter extends Vehicle{ void start () { //code here…} void stop () { //code here…} void accelerate () { //code here…} void brake () { //code here…} }
Tako bomo imeli abstraktni razred Vehicle in tri razrede Car, Bike in Scooter. Vsak od teh razredov bo podaljšal razred Vozilo in preglasil vsako abstraktno metodo.
Tako na splošno, kadarkoli moramo predstaviti tak sistem, ki ima skupne metode ali operacije za predstavitev, nato pa uporabniku predstaviti samo zunanjo perspektivo, gremo za abstrakcijo. Kot rezultat odstranimo običajne metode in jih predstavimo kot abstraktne metode ter te abstraktne metode zberemo v skupnem abstraktnem razredu.
Ko imamo oris sistema, predstavljenega kot abstraktni razred, in operacije kot abstraktne metode, lahko iz navedenega abstraktnega razreda nato izpeljemo poljubno število razredov in preglasimo abstraktne metode za izvajanje teh operacij za vsak razred.
Na ta način postane koristno načrtovati sistem.
Povzetek razreda in vmesnika
Zgoraj smo videli abstraktni razred. Vmesniki so še drugi gradniki, ki izvajajo abstrakcijo. Vmesniki so pogodbe in razredi, ki izvajajo vmesnik, morajo spoštovati te pogodbe.
Pogodbe v vmesnikih niso nič drugega kot metode, ki se ne izvajajo. Znotraj vmesnikov bomo imeli samo prototipe metod. Metod znotraj vmesnikov ne bo izveden niti enkrat.
Če imamo izjavo o vmesniku, kot sledi:
public interface interfaceA{ void myInterfaceMethod (); }
Potem mora kateri koli razred, ki implementira interfaceA, preglasiti 'myInterfaceMethod'.
Če metode v razredu sploh ne preglasimo, je ta razred predstavljen kot abstrakten.
abstract class TestClass implements interfaceA{ // not a compulsion to override myInterfaceMethod. }
Kasneje bomo imeli posebno vadnico o vmesniku.
Nato se pogovorimo o nekaterih razlikah med abstraktnimi razredi in vmesniki v Javi.
kako najdem svojo omrežno varnostno kodo
Razlika med abstraktnim razredom in vmesnikom
Povzetek pouka | Vmesnik |
---|---|
Abstraktni razred ima lahko zasebne ali zaščitene člane s podatki, razen javnih. | Člani vmesnika so privzeto javni. |
Abstraktni razred ima lahko abstraktne in / ali ne abstraktne metode. | Vmesnik ima lahko samo abstraktne metode. |
Povzetek lahko vsebuje ali ne končne spremenljivke. | Vmesniki lahko končne spremenljivke privzeto spreminjajo. |
Abstraktni razred ima lahko končne, statične ali nestatične ali nekončne spremenljivke. | Vmesniki imajo lahko samo končne in statične spremenljivke. |
Abstraktni razred lahko nudi izvedbo vmesnika. | Vmesniki ne morejo izvajati abstraktnega razreda. |
Abstraktni razred se podeduje s ključno besedo »extends«. | Vmesnik je izveden s pomočjo ključne besede »implements«. |
Abstraktni razred lahko razširi druge razrede ali izvede več vmesnikov. | Vmesnik lahko izvaja samo drug vmesnik. |
Kdaj uporabiti abstraktni razred in vmesnik v Javi
Odločitev o tem, kdaj uporabiti abstraktni razred in kdaj uporabiti vmesnike v aplikaciji Java, je treba pametno sprejeti po temeljitem razumevanju obravnavane težave. Kot je prikazano spodaj, moramo upoštevati dva vidika.
Abstraktni razredi z delnim vedenjem
Vemo, da se abstraktni razredi morda ne bodo izvajali v celoti manj. Lahko imajo delno vedenje. Po drugi strani pa vmesniki nimajo nobene izvedbe. Torej, ko moramo izbirati med abstraktnim razredom in izvedbo, moramo upoštevati ta vidik naše aplikacije.
To pomeni, da se moramo najprej odločiti, ali ima aplikacija, ki jo načrtujemo, kakšno skupno delno izvedbo, ki jo lahko ločimo v abstraktnem razredu.
Na primer menimo, da načrtujemo spletno aplikacijo. Za to bomo morali uporabiti nekaj spletnih tehnologij, kot so Servlet, REST API itd. Zdaj ima vsaka od teh spletnih tehnologij nekaj tehnik ali korakov, ki jih je treba izvesti ne glede na aplikacijo, ki jo razvijamo. Nato izdelamo svojo prilagojeno aplikacijo.
V tem primeru lahko določeno kodo, ki jo mora spletna tehnologija izvršiti, uvrstimo v abstraktni razred. Lahko dobimo vmesnik za to? Ne. To je zato, ker vmesnik ne more imeti izvedbe.
Samo pogodbeni vmesniki
Vemo, da imajo vmesniki pogodbe ali metode, ki so del njih. Te metode so samo prototipi. Te vmesnike moramo implementirati v razred in nato preglasiti metode.
Zdaj razmislite o vmesniku Map Java Collections Framework. Številni razredi, kot so HashMap, TreeMap in HashTable itd., Izvajajo ta vmesnik. Vsak od teh razredov ima drugačno izvedbo. Nimajo nobenega običajnega vedenja, ki bi ga lahko predstavili v abstraktnem razredu.
Torej oblikujemo vmesnik s prototipi metod in nato implementiramo vsak razred.
Tako bi morali vsak faktor pravilno pretehtati, preden izberemo abstraktni razred in vmesnik.
Razlika med abstrakcijo in inkapsulacijo
Pogovorimo se o nekaterih razlikah med abstrakcijo in eno pomembnejšo značilnostjo OOP, tj. Inkapsulacijo.
Abstrakcija | Kapsulacija |
---|---|
Postopek pridobivanja in povzetka informacij | Postopek vezave informacij. |
Tehnika abstrakcije je na ravni zasnove ali vmesnika. | Mehanizem zapiranja je na izvedbeni ravni. |
Abstrakcija skriva podrobnosti. | Enkapsulacija veže podatke v eno enoto, kar zagotavlja informacijsko varnost. |
Abstrakcija se izvaja z uporabo abstraktnih razredov in vmesnikov. | Modifikatorji dostopa, in sicer javni, zasebni in zaščiteni ter privzeti, igrajo vlogo pri inkapsulaciji. |
V abstrakciji je uporabniku predstavljen edini abstraktni pogled, medtem ko so zapleteni in podrobni podatki uporabniku skriti. | Pri enkapsulaciji so podatki združeni v enoto in jih je mogoče zaščititi ali narediti dostopnimi z modifikatorji dostopa ter metodami getter in setter. |
Pogosto zastavljena vprašanja
V # 1) Ali se abstrakcija in podatki skrivata enako?
Odgovor: Ne, abstrakcija in skrivanje podatkov nista enaka. A oboje sta pomembni značilnosti objektno usmerjenega programiranja. Medtem ko je abstrakcija postopek skrivanja podrobnosti v ozadju, je skrivanje podatkov tehnika izolacije podatkov pred neposrednim dostopom.
V # 2) Kakšne so prednosti abstrakcije?
Odgovor: Spodaj je navedenih nekaj prednosti abstrakcije:
- S tem, ko skrije podrobnosti ozadja in uporabniku izpostavi samo abstraktni pogled, abstrakcija naredi kodo enostavnejšo in bolj berljivo.
- Ker abstrakcija ščiti nepotrebne podrobnosti, je koda manjša.
- Vzdrževanje kode lahko postane zapleteno in težko brez abstrakcije.
V # 3) Zakaj je abstrakcija tako pomembna?
Odgovor: Abstrakcija nam omogoča, da skrijemo podrobnosti v ozadju, ki so pomembne in lahko privedejo do kaosa, če bodo pricurljale v svet. S skrivanjem podrobnosti ozadja in izpostavljanjem uporabnika le zahtevanega vmesnika aplikacija poenostavi aplikacije.
V # 4) Razložite abstrakcijo s primerom v realnem času.
Odgovor: Obstaja veliko primerov abstrakcije v realnem času, vključno z geometrijskimi oblikami, vozili itd. Še en primer je bankomat (Automated Teller Machine). Bankomat podpira operacije, kot so dvig gotovine, preverjanje stanja, prenos denarja itd. Toda ne vemo, kako te operacije delujejo znotraj podjetja.
Za izbiro in izvajanje zahtevanih operacij imamo samo monitor z uporabniškim vmesnikom.
V # 5) Ali lahko abstrakcijo dosežemo brez enkapsulacije?
Odgovor: Abstrakcija ščiti podrobnosti izvedbe, enkapsulacija pa podrobnosti predmeta. Predmet je abstraktna oblika resničnega sveta, njegove podrobnosti pa se skrijejo z enkapsulacijo. Tako je za abstrakcijo potrebna enkapsulacija.
Zaključek
V tej vadnici smo podrobno razpravljali o abstrakciji v Javi. Abstrakcija je tehnika skrivanja nepotrebnih podrobnosti pred uporabnikom. Uporabnik ima dostop le do ustreznih podrobnosti. Operacije vozil ali operacije ATM so klasični primeri abstrakcije v resničnem svetu.
Ko uporabljamo bankomat, nas zanima samo izvajanje operacij, kot je dvig gotovine itd., Ne da bi morali vedeti podrobnosti o tem, kako natančno se ta operacija izvaja interno.
Java omogoča abstrakcijo prek abstraktnih razredov in vmesnikov. Medtem ko vmesniki zagotavljajo 100% abstrakcijo, abstraktni razredi zagotavljajo delno abstrakcijo. Izbirati je treba med vmesniki in abstraktnimi razredi, odvisno od aplikacije, ki jo je treba razviti, in tudi od tega, katere informacije bodo uporabniku izpostavljene.
V tej vadnici smo razpravljali tudi o abstraktnih metodah, skupaj z razlikami med abstraktnimi razredi in vmesniki.
=> Tukaj preverite VSE Vadnice za Java.
Priporočeno branje
- Vadnica Java vmesnika in abstraktnega razreda s primeri
- Java Integer in Java BigInteger Class z primeri
- Vadnica razreda Java Scanner Class z primeri
- Kaj je Java Vector | Vadnica Java Vector Class s primeri
- Java Enum: Vadnica za naštevanje Java s primeri
- Osnove Java: Sintaksa Java, Razred Java in Osnovni koncepti Java
- JAVA Vadnica za začetnike: 100+ praktičnih Javnih video vadnic
- Java Iterator: Naučite se uporabljati iteratorje v Javi s primeri