Põhierinevus – pärand vs liides Javas
Java on Sun Microsystemsi poolt välja töötatud programmeerimiskeel. Java abil saab arendada erinevaid rakendusi. See on mitme paradigma keel, mis toetab objektorienteeritud, struktureeritud jne. Java peamine eelis on see, et see toetab objektorienteeritud programmeerimist (OOP). Programmeerija saab luua klasse ja objekte. OOP-is on neli sammast. Need on pärimine, polümorfism, abstraktsioon ja kapseldamine. Pärand ja liidesed on seotud OOP-iga. Peamine erinevus pärimise ja liidese vahel on see, et pärimine on uute klasside tuletamine olemasolevatest klassidest ja liides on abstraktsete klasside ja mitme pärimise rakendamine.
Mis on Javas pärimine?
Pärimine võib saavutada koodi taaskasutatavuse. Pärimine aitab taaskasutada olemasoleva klassi atribuute ja meetodeid. Uue klassi tuletamise mehhanismi vana klassi abil nimetatakse pärimiseks. Vana klassi tuntakse vanemklassina või superklassina. Tuletatud klassi nimetatakse alamklassiks või alamklassiks.
Java pärimise süntaks on järgmine.
class subclass_name laiendab superclass_name {
muutuja deklaratsioon;
meetodi deklaratsioon;
}
Pärimise kontseptsiooni saab selgitada järgmise näite abil. Oletame, et on olemas klass nimega A järgmiselt.
avalik klass A{
public void summa(){
System.out.println(“Summa”);
}
}
Kui tahame lisada uue meetodi olemasolevat klassi muutmata, saame seda teha järgmiselt.
avalik klass B{
public void sub(){
System.out.println(“Sub”);
}
}
Programmeerija saab klassi A summa() kasutamiseks kasutada pärimist.
avalik klass B laiendab klassi A{
public void sub(){
System.out.println(“Sub”);
}
}
Põhifunktsioonis on võimalik pärimise abil luua B-objekti ja kutsuda välja sub(), mis kuulub klassi B ja sum(), mis kuulub klassi A.
public static void main(String args){
B obj=uus B();
obj.sub();
obj.sum();
}
Pärimist on erinevat tüüpi. Need on üksikpärimine, mitmikpärimine, mitmetasandiline pärand ja hierarhiline pärand. Ühes pärandis on üks põhiklass ja üks tuletatud klass. Mitmetasandilises pärandis on kolm klassi, nimelt põhiklass, vaheklass ja tuletatud klass. Vaheklass pärib baasklassist ja tuletatud klass vaheklassist. Hierarhilises pärandis on üks põhiklass ja palju tuletatud klasse. On olemas spetsiaalne tüüp, mida nimetatakse hübriidseks pärimiseks. See on kahe või enama päranditüübi kombinatsioon.
Joonis 01: Pärand
Mitme pärimise korral on palju põhiklasse ja üks tuletatud klass. Oletame, et klass A ja B on baasklassid. Klass C on tuletatud klass. Kui nii A- kui ka B-klassil on sama meetod ja programmeerija kutsub selle meetodi tuletatud klassist, põhjustab see ebaselguse probleemi. Kahe klassi pärimine võib põhjustada kompileerimisaja tõrke. Seetõttu ei toetata Java mitmekordset pärandit. Selle probleemi lahendamiseks saab kasutada liidest.
Mis on Java liides?
Abstraktsioon on juurutamise üksikasjade peitmise ja kasutajale ainult funktsioonide kuvamise protsess. Abstraktsiooni saab saavutada abstraktsete klasside või liideste abil. Abstraktne meetod on meetod, millel puudub teostus. Klass, millel on vähem alt üks abstraktne meetod, on abstraktne klass. Abstraktse klassi näide on järgmine.
abstraktne klass A{
abstract void summa();
}
Oletame, et on kaks abstraktset klassi A ja B. Abstraktsete meetodite A ja B rakendamiseks luuakse uus klass C. Siis peaks klass C laiendama nii A-d kui ka B-d. Kuid Java-s ei toetata mitut pärandit. Seetõttu tuleks kasutada liideseid. Meetodite deklareerimiseks saab kasutada liideseid, kuid meetodeid pole võimalik defineerida. Liideste abil pole objekti võimalik luua. Klass C peaks rakendama kõiki liidese A ja B meetodeid.
liides A{
void summa();
}
liides B{
void sub();
}
C-klassi tööseadmed A, B{
public void summa(){
System.out.println(“Summeerimine”);
}
public void sub(){
System.out.println("lahutamine");
}
}
Nüüd on põhiprogrammis võimalik luua C-objekt ja kutsuda mõlemat meetodit.
public static void main (String args) {
C obj=uus C();
obj.sum();
obj.sub();
}
Niisiis, liideseid saab kasutada mitme pärimise rakendamiseks.
Liideste teine kasutusvõimalus on see, et need pakuvad turvalisust. Vaadake allolevat koodi.
liides A {
kehtetu summa ();
}
klassi B rakendab A {
avalik tühisumma () {
System.out.println(“Summeerimine”);
}
avalik tühine korrutis () {
System.out.println("Korrutamine");
}
}
B objekti loomisel on võimalik kutsuda mõlemat meetodit summa () ja korrutada (). Kui programmeerija soovib piirata korrutamisfunktsiooni () kasutamist, on see võimalik järgmiselt.
public static void main(String args){
A obj=uus B();
obj.sum();
}
A obj=uus B(); loob objekti. See on A-tüüpi ja mälu on eraldatud kui B. On võimalik kutsuda sum(), kuid ei saa käivitada kordamine(). See piirang tehakse liideste abil.
Millised on Java pärimise ja liidese sarnasused?
- Mõlemad mõisted on seotud objektorienteeritud programmeerimisega
- Mõlemad esindavad IS-A suhet.
Mis vahe on Java pärandil ja liidesel?
Pärimine vs liides Javas |
|
Pärimine on OOP kontseptsioon olemasolevatest klassidest uute klasside tuletamiseks. | Liides on OOP-i mehhanism abstraktsiooni ja mitmekordse pärimise rakendamiseks. |
Kasutus | |
Pärimine tagab koodi korduvkasutatavuse. | Liidesed pakuvad abstraktsiooni ja mitmekordset pärimist. |
Kokkuvõte – pärand vs liides Javas
Java on mitme paradigmaga programmeerimiskeel, mis toetab objektorienteeritud programmeerimist. Pärand ja liidesed on seotud objektorienteeritud programmeerimisega. Pärimise ja liidese erinevus seisneb selles, et pärimine on uute klasside tuletamine olemasolevatest klassidest ja liidesed on abstraktsete klasside ja mitme pärimise rakendamine.
Laadige alla PDF-versioon Pärand vs liides Javas
Saate alla laadida selle artikli PDF-versiooni ja kasutada seda võrguühenduseta kasutamiseks vastav alt tsitaadi märkusele. Laadige PDF-versioon alla siit. Erinevus pärimise ja liidese vahel Java-s