Skip to content
Skip to content
Menu
Info Cafe
Info Cafe

Polymorfisme eenvoudig uitgelegd!

By admin on maart 28, 2021

OOP | Voor beginners | Dynamisch vs. Statisch

De vier basis concepten van OOP (Object Oriented Programming) zijn Inheritance, Abstraction, Polymorphism en Encapsulation. Voor iemand die nieuw is in OOP kan het in het begin een beetje moeilijk zijn om de laatste 3 van de basis concepten van OOP te begrijpen (omdat Inheritance een beetje gemakkelijk te begrijpen is).

Polymorfisme is het vermogen van een object om vele vormen aan te nemen.

Elk Java object dat meer dan één IS-A test kan doorstaan wordt beschouwd als een polymorf- leerpunt. Dit betekent dat elk object van een child class elke vorm kan aannemen van een class in zijn parent hierarchy en natuurlijk ook van zichzelf. Wat dit in feite betekent is dat het kind klasse object kan worden toegewezen aan elke klasse verwijzing in zijn ouder hiërarchie en natuurlijk zichzelf ook.

Eg: Laten we zeggen Student klasse is een kind van de klasse Persoon

Student student = new Student()
Person person = new Student()

Het meest voorkomende gebruik van polymorfisme in OOP doet zich voor wanneer een ouder klasse verwijzing wordt gebruikt om te verwijzen naar een kind klasse object. Eigenlijk is hier sprake van Dynamisch Polymorfisme (dat ik hierna zal beschrijven).

Er zijn 2 soorten polymorfisme die vaak worden genoemd.

  1. Dynamisch polymorfisme
  2. Statisch polymorfisme

Dynamisch polymorfisme

Dit wordt ook wel Run-Time polymorfisme, Dynamische binding, Run-Time binding, Late binding en Methode overriding genoemd. Hier zijn vele vormen in verschillende klassen.

Dit is wat algemeen bekend staat als het zogenaamde “polymorfisme”. Laat het me heel eenvoudig uitleggen –

Laten we aannemen dat er in klassen in een klasse-hiërarchie (ouder-kind relaties) methoden zijn met dezelfde methodesignatuur, deze methoden zijn in verschillende vormen (dit staat bekend als method overriding).

Wanneer een object wordt toegewezen aan een klasse-referentie en wanneer een methode van het object wordt aangeroepen, wordt de methode in de klasse van het object uitgevoerd. Niet de methode van de referentieklasse (als de referentie een bovenliggende klasse is).

Wat hier gebeurt is dat, omdat het maken van het object op run-time gebeurt, de vorm van de methode die moet worden uitgevoerd (de methode in het object) pas op run-time kan worden bepaald.

Eg: Java-code

class Person { 
public void teach(){
System.out.println("Person can teach");
}
}
class Teacher extends Person {
public void teach() {
System.out.println("Teacher can teach in a school");
}
}
public class TestTeacher {
public static void main(String args) {
Person person = new Person(); //Person reference and object
Person another_person = new Teacher(); //Person reference, Teacher object
Teacher teacher = new Teacher(); //Teacher reference and obj. person.teach();//output: Person can teach // Here you can see Teacher object's method is executed even-
// -though the Person reference was used
another_person.teach();//output: Teacher can teach in a school teacher.teach();//output: Teacher can teach in a school
}
}

Statisch polymorfisme

Dit wordt ook wel Compile-Time polymorfisme, Static binding, Compile-Time binding, Early binding en Method overloading. Hier is het hebben van vele vormen gebeurt in dezelfde klasse.

Als ik dit EENVOUDIG uitleg..

Dit is eigenlijk methode overloading. Methode-overloading is het hebben van meer dan één methode met dezelfde methode-naam, maar met verschillende argumenten (het terugkeertype kan al dan niet hetzelfde zijn). Hier kiest de compiler bij het aanroepen van de methoden welke methode moet worden aangeroepen, afhankelijk van de parameters die bij het aanroepen worden doorgegeven. Dit gebeurt tijdens compile-time.

Eg: Java code

class Calculator {
void add(int a, int b) {
System.out.println(a+b);
}
void add(int a, int b, int c) {
System.out.println(a+b+c);
}
}public class Demo {
public static void main(String args) {
Calculator calculator = new Calculator(); // method with 2 parameters is called
calculator.add(10, 20); //output: 30 // method with 3 parameters is called
calculator.add(10, 20, 30); //output: 60
}
}

Sommigen zeggen dat method overloading niet echt polymorfisme is. Maar ik denk dat het gecategoriseerd kan worden als een soort polymorfisme, omdat in method overloading er een methode is in vele vormen.

Hoop dat dit geholpen heeft in het eenvoudig begrijpen van polymorfisme.

Cheeers! 😀

Hier zijn enkele nuttige links

  • Method overriding
  • Method overloading
  • Typen polymorfisme
  • Verschil tussen Runtime Polymorfisme en Compileer-tijd Polymorfisme

Berichtnavigatie

Facebook (Nederlands)
Revolutionaire Oorlog

Geef een reactie Antwoord annuleren

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Meest recente berichten

  • 9 Beste Vitaminen en Supplementen voor honden voor een betere gezondheid
  • CD-rentevoorspelling voor 2021: Tarieven blijven waarschijnlijk laag, maar kunnen later in het jaar stijgen
  • Hoe de documentatie van het kwaliteitsmanagementsysteem te structureren
  • Chronische bekkenpijn en prostatitis: symptomen, diagnose en behandeling
  • Mixed Berry Crisp
  • Koolhydraatarm chocoladepuddingrecept
  • Gezonde spelletjes en activiteiten voor kinderen | UIC Online Informatics
  • De voordelen van borstvoeding na één jaar
  • Is het veilig om koffiedik door de gootsteen te spoelen | Atomic Plumbing
  • Onze werkzaamheden

Meta

  • Inloggen
  • Berichten feed
  • Reacties feed
  • WordPress.org

Archief

  • maart 2021
  • februari 2021
  • januari 2021
  • december 2020
  • DeutschDeutsch
  • NederlandsNederlands
  • EspañolEspañol
  • FrançaisFrançais
  • PortuguêsPortuguês
  • ItalianoItaliano
  • PolskiPolski
  • 日本語日本語
©2021 Info Cafe | WordPress Theme by SuperbThemes.com