Võrdluskaardid
Võrdluse alus | Laiendab | Rakendused |
---|---|---|
Põhiline | Laienduse märksõna abil luuakse alamklass, mis kasutab superklassi funktsioone. | Rakenduse märksõna kasutatakse liidese rakendamiseks |
Meetodid | Laiendav märksõna ei pruugi ületada kõiki super klassi meetodeid. | Rakenduse märksõna peab rakendama kõiki rakendatava liidese meetodeid. |
Klass | Klass võib laiendada ainult ühte superklassi. | Klass võib rakendada mitmeid interafaale. |
Liides | Liides võib laiendada rohkem kui ühte liidest. | Liides ei saa rakendada teist liidest. |
Märksõna laiendamine
Pärand, mis on objektide orienteeritud programmeerimise oluline mõiste, saavutatakse, kui alaklass laiendab teist superklassi. Alamklassil lubatakse laiendada ainult ühte superklassi. Klass ei saa kunagi Java-s rohkem kui ühte superklassi laiendada. Kui klass laiendab teist klassi, võib see ületada superklassis määratletud meetodeid. Mõistagem, et märksõna ulatub näite abiga.
klass A {String s; A (String s1) {s = s1; } // kuvab stringi void kuva () {System.out.println (+ s); }} klass B laiendab A {String i; B (String s1, String i1) {super (s1); i = i1; } void dispaly () {super.dispaly (); / * kuvatud klassi A () kuvatud. * / System.out.println (+ i); }} class Override {public static void main (String args []) {B ob = new B (Tech, erinevused); ob.display (); / * klassi B kuvamine * /}} / * välja * / tehnilised erinevused
Ülaltoodud koodis võib täheldada, et klass B on laiendanud A-klassi ja on ületanud klassis A defineeritud meetodi näidiku. Samamoodi võib liides korraga korrata rohkem kui ühte liidest. Kuna liides ei pea rakendama laiendatud liidese ühtegi meetodit, siis on lubatud korraga korraga mitut liidest.
Rakenduse märksõna määratlus
Märksõna rakenduste abil pärineb klass kõik liidese meetodid. Kui klass rakendab liidese, peab see klass rakendama kõiki rakendatava liidese meetodeid. Liides ei saa kunagi rakendada teist liidest, kuna rakendussõna lubab meetodite rakendamist, kuid liides ei rakenda selles kunagi meetodeid, mistõttu liides ei ole võimeline rakendama teist liidest. Mõistagem näiteks näite abil rakendussõna.
liidese stringid {void display (String s); } liidese täisarv {void show (int i); } klass Demo rakendab stringe, täisarv {void show (int i) {System.Out.Println ("täisarv väärtus" + i); } void display (String s) {System.Out.Println ("string väärtus:" + s); }} klass Demo_main {public static void main (string args []) {Demo d = uus demo (); d.display ("TechDifferences"); d.show (2); }} / * väljund * / tehnilised erinevused 2
Nagu ülaltoodud koodis, näete, et klassi demo rakendab kahte liidese stringi ja täisarvu ning on rakendanud meetodid, mis on deklareeritud nii liideses, kus kuvatakse () kui ka näitavad ().
Peamised erinevused laienduste ja rakenduste vahel
- Klass võib pärida teise klassi või liides pärsib teisi märksõnu kasutavaid liideseid, samal ajal kui klass võib rakendada rakendusi märksõna rakenduste abil.
- Alamklass, mis laiendab superklassi, võib või ei pruugi ületada kõiki superklassi meetodeid. Teisest küljest peab liidest rakendav klass määratlema / rakendama kõiki selle liidese meetodeid.
- Klass võib samaaegselt rakendada mis tahes arvu liideseid. Teisest küljest võib klass laiendada ainult ühte superklassi.
- Liides võib laiendada mis tahes arvu liideseid, kuid liides ei saa kunagi rakendada ühtegi muud liidest, kuna meetoditel ja liidesel defineerivad rakendusvahendid on alati abstraktsed, nii et liides ei saa kunagi rakendada teist liidest.
Järeldus:
Lõpetan arutelu, milles öeldakse, et liidese rakendamine muudab koodi paindlikumaks kui klassi laiendamine. Kuna see väldib piirangut ainult ühe super klassi pärimisele Java. Kasutades rakenduse märksõna, võib klass pärida rohkem kui ühe liidese omadusi.