Võrdluskaart
Võrdluse alus | Klass | Liides |
---|---|---|
Põhiline | Objektide loomiseks pakutakse klassi. | Liideseid ei saa kunagi kuvada, kuna meetodid ei suuda mingeid meetmeid kutsuda. |
Märksõna | klassi | liides |
Juurdepääs spetsifikatsioonile | Klasside liikmed võivad olla era-, avalik-õiguslikud või kaitstud. | Liidese liikmed on alati avalikud. |
Meetodid | Klasside meetodid on määratletud konkreetse tegevuse teostamiseks. | Liidese meetodid on puhtalt abstraktsed. |
Rakendada / pikendada | Klass võib rakendada mis tahes arvu liideseid ja võib laiendada ainult ühte klassi. | Liides võib laiendada mitut liidest, kuid ei saa rakendada ühtegi liidest. |
Konstruktor | Klassis võib muutujate initsialiseerimiseks olla konstruktorid. | Liidesel ei ole kunagi konstruktorit, sest algoritmi jaoks on peaaegu mingit muutujat. |
Klasside määratlus
Klass on Java programmeerimise olulisem aspekt ilma klassideta, mida ei saa java programmi rakendada. Klass loob viite tüüpe ja neid viiteliike kasutatakse objektide loomiseks. Klassil on allkiri ja asutus. Klassi allkiri on klassi nimi ja teave, mis ütleb, kas klass on pärinud teise klassi. Klassi kehal on väljad ja meetodid, mis tegutsevad nendel väljadel. Klass luuakse märksõna klassi abil . Võimaldab näha, kuidas klassi kuulutada.
klassi klassi_nimi {/ * väljad ... meetodid * /}
Kui klass on instantiated, sisaldab iga loodud objekt nende väljadega väljade ja meetodite koopiat. Klassis olevad väljad ja liikmed võivad olla staatilised või mittestatilised. Staatiliste liikmete väärtus on iga objekti jaoks konstantne, kuid mitte-staatilised liikmed lähtestatakse iga objekti poolt vastavalt oma nõudele erinevalt.
Klassi liikmetel on ligipääsu spetsifikatsioonid, mis otsustavad kasutajate või alaklasside liikmete nähtavuse ja kättesaadavuse üle. Juurdepääsu spetsifikatsioonid on avalikud, era- ja kaitstud. Klass võib pärida mõne teise klassi abil, kasutades juurdepääsu spetsifikatsiooni, mis otsustab superklassi (päritud klass) liikmete nähtavuse alaklassis (pärilik klass). Seega täidab klass objektide orienteeritud programmeerimisel andmete peitmise ja kapseldamise mõiste.
Liidese määratlus
Liides on ka Java-s defineeritud viiteliikide hulgas. Liidese tähtsus on see, et Java võib klassis pärida ainult ühe klassi. Selle piirangu vältimiseks tutvustasid Java disainerid liidese kontseptsiooni. Liides on süntaktiliselt sarnane klassiga, kuid sellel puudub väljadeklaratsioon ja liidese sees olevad meetodid ei ole rakendatud. Liides on deklareeritud märksõna liidese abil . Vaatame liidese deklaratsiooni.
liidese liides_nimi {tüüp var_name = väärtus; tüüpi meetod1 (parameetrite nimekiri); tüüpi meetod2 (parameetrite nimekiri); . . }
Liides ei määratle ühtegi selle sees deklareeritud meetodit, kuna sellel puudub väljadel töötamine. Lihtsalt, kuna ükskõik milline liidese sees olev meetod ei tee mingeid toiminguid, ei saa liidest kunagi kuvada. Kui liidesel on mistahes põllu liige, tuleb see vormindada deklaratsiooni esitamise ajal. Liides ei sisalda kunagi mingeid konstruktoreid, kuna neil puudub initsiatiivide saamiseks väljal. Niisiis määratleb liides ainult seda, mida klass peab tegema, selle asemel, kuidas seda teha.
Loodud liidese saab rakendada mis tahes arvu klasside abil, kasutades märksõna rakendusi . Kuid liideseid kasutavad klassid peavad määratlema kõik liidese sees olevad meetodid. Liides võib pärida ka teise liidese, kasutades laiendatud märksõna. Kui klass rakendab liidest, mis laiendab teist liidest. Seejärel peab klass määratlema nii ahelas esinevate liideste meetodid. Liidese sisemised meetodid peavad alati olema avalikud, kuna need peavad olema ligipääsetavad klasside abil, mis neid rakendavad.
Peamised erinevused klassi ja liidese vahel Java-s
- Klass saab esile tuua selle objektide loomise teel. Liides ei ole kunagi käivitatud, kuna liidese sees deklareeritud meetodid on abstraktsed ja ei täida ühtegi toimingut, seega ei ole ühtegi liidest kohe võimalik kasutada.
- Klass deklareeritakse märksõna klassi kasutades. Samamoodi luuakse kasutajaliidese abil liides.
- Klasside liikmetel on ligipääsu spetsifikatsioon nagu avalik, eraõiguslik, kaitstud. Kuid liidese liikmed on alati avalikud, kuna neid tuleb kasutada neid rakendavate klasside kaudu.
- Klassisisesed meetodid on määratud toimima klassis deklareeritud väljadel. Kuna andmeväljade deklaratsioonis puudub liides, on liidese sees olevad meetodid puhtalt abstraktsed.
- Klass võib rakendada mis tahes arvul liideseid, kuid võib laiendada ainult ühte superklassi. Liides võib laiendada mis tahes arvu liideseid, kuid ei saa rakendada ühtegi liidest.
- Klassi sees on konstruktorid, et saada muutuja initsialiseeritud. Kuid liidesel ei ole konstruktoreid, kuna ei ole mingeid väljad, mida tuleb alustada. Liidese väljad alustatakse ainult deklaratsiooni esitamise ajal.
Järeldus:
Nii klassidel kui ka liidesel on oma tähtsus. Kasutatakse klassi, kui me peame määratlema, kuidas ülesanne oleks tehtud. Kasutatakse liidest, kui peame teadma, millist ülesannet tuleb teha.