Nøgleforskel – Polymorfi vs arv i OOP
Objektorienteret programmering (OOP) bruges almindeligvis til at udvikle software. Mange programmeringssprog understøtter objektorienteret programmering. Objektorienteret programmering er en metode til at designe et program ved hjælp af klasser og objekter. En klasse i OOP er en blueprint til at skabe et objekt. En klasse har egenskaber og metoder. Et objekt er en instans af en klasse. OOP indeholder fire søjler såsom arv, polymorfi, abstraktion og indkapsling. Denne artikel diskuterer forskellen mellem polymorfisme og arv i OOP. Den vigtigste forskel mellem polymorfisme og arv i OOP er, at polymorfisme er et objekts evne til at opføre sig på flere måder, og arv er at oprette en ny klasse ved hjælp af egenskaber og metoder for en eksisterende klasse.
Hvad er polymorfi i OOP?
Polymorfi er at angive flere former. Et objekt kan have flere adfærd. Polymorfi kan opdeles i to kategorier. De overbelaster og tilsidesætter.
Overbelastning
Se nedenstående program skrevet i Java.
Figur 01: Overbelastning
I henhold til ovenstående program oprettes et objekt af type A. Når du kalder obj.sum(); det vil give output relateret til metode sum(). Når du kalder obj.sum(2, 3); det vil give output relateret til sum(int a, int b). Det kan observeres, at det samme objekt har forskellig adfærd afhængigt af situationen. Når der er flere metoder med samme navn, men med forskellige parametre, er det kendt som overbelastning. Det er også kendt som statisk binding eller kompileringstidspolymorfi.
Tilsidesættende
En anden type polymorfi er altoverskyggende. Se nedenstående program skrevet i Java.
Figur 02: Tilsidesættende
I henhold til ovenstående program er der en metodevisning() i klasse A. Klasse B strækker sig fra klasse A. Derfor er alle metoder i klasse A tilgængelige for klasse B. Det er arv. Arvebegrebet beskrives yderligere senere.
Klasse B har også den samme metode display(). Når du opretter et objekt af type A og kalder visningsmetode, vil outputtet give B. Klasse A visningsmetode tilsidesættes af klasse B visningsmetode. Så outputtet er B.
Når der er metoder med samme navn og samme parametre, men i to forskellige klasser, og de er forbundet med arv, er det kendt som tilsidesættende. Det er også kendt som Late binding, Dynamic Binding, Runtime Polymorphism. Overbelastning og tilsidesættelse kaldes polymorfi. Det er et hovedkoncept i objektorienteret programmering.
Hvad er arv i OOP?
Se nedenstående program skrevet i Java.
Figur 03: Eksempel på arv
Ifølge ovenstående program har klasse A metode sum() og klasse B har metode sub().
Sum()-metoden for klasse A kan bruges i klasse B ved at bruge udvide nøgleordet. Genbrug af egenskaber og metoder i en eksisterende klasse til at skabe en ny klasse er kendt som arv. Selv der er ingen sum() metode i klasse B; det er nedarvet fra klasse A. Nedarvning er nyttigt til genbrug af kode. Den ældre klasse kaldes basisklassen, superklassen eller forældreklassen. Den afledte klasse kaldes underklassen eller underklassen.
Arvtyper
Der er forskellige typer af arv. De er enkeltniveauarv, flerniveauarv, multipelarv, hierarkisk arv og hybridarv.
Enkeltarv
I Single Inheritance er der en superklasse og en underklasse. Hvis klasse A er superklassen og klasse B er underklassen, er alle egenskaber og metoder i klasse A tilgængelige for klasse B. Der er kun ét niveau; derfor kaldes det for arv på ét niveau.
Arv på flere niveauer
I Multi-Level Inheritance er der tre niveauer af klasser. Mellemklassen arver fra superklassen. Underklassen arver fra den mellemliggende klasse. Hvis der er tre klasser som A, B og C og A er superklassen og B er mellemklassen. Så arver B fra A og C arver fra B, det er en Multi-Level Inheritance.
Multiple Inheritance
I Multiple Inheritance er der mange superklasser og en underklasse. Hvis der er tre superklasser kaldet A, B, C og D er underklassen, så kan klasse D arve fra A, B og C. Multiple Inheritance er understøttet i programmeringssproget C++. Det er ikke understøttet i programmeringssprog som Java eller C. Grænseflader bruges til at implementere Multiple Inheritance på disse sprog.
Hierarkisk arv
Hvis der er klasser kaldet A som superklasser, og B, C er underklasser, kan disse underklasser arve egenskaber og metoder fra klasse A. Den slags arvetyper er kendt som hierarkisk arv.
Hybrid Inheritance
Der er en anden speciel arvetype, som er kendt som hybridarv. Det er en kombination af multi-level og multiple arv. Hvis A, B, C og D er klasser, og B arver fra A, og D arver fra både B og C, så er det en hybrid arv.
Hvad er lighederne mellem polymorfi og arv i OOP?
Begge er koncepter inden for objektorienteret programmering
Hvad er forskellen mellem polymorfi og arv i OOP?
Polymorfisme vs arv i OOP |
|
Polymorfi er et objekts evne til at opføre sig på flere måder. | Inheritance er at oprette en ny klasse ved hjælp af egenskaber og metoder for en eksisterende klasse. |
Brug | |
Polymorfisme bruges til objekter til at kalde hvilken form for metoder ved kompileringstid og kørselstid. | Inheritance bruges til genbrug af kode. |
Implementering | |
Polymorfi er implementeret i metoder. | Arv er implementeret i klasser. |
Kategorier | |
Polymorfi kan opdeles i overbelastning og tilsidesættelse. | Arv kan opdeles i enkelt-niveau, multi-level, hierarkisk, hybrid og multipel arv. |
Opsummering – Polymorfi vs arv i OOP
Polymorfi og arv er hovedbegreber i objektorienteret programmering. Forskellen mellem polymorfisme og arv i OOP er, at polymorfi er en fælles grænseflade til flere former, og arv er at skabe en ny klasse ved hjælp af egenskaber og metoder for en eksisterende klasse. Begge koncepter er meget brugt i softwareudvikling.
Download PDF'en Polymorphism vs Inheritance i OOP
Du kan downloade PDF-versionen af denne artikel og bruge den til offline-formål i henhold til citatnotat. Download venligst PDF-version her Forskel mellem polymorfisme og arv i OOP