Junior
Wat zijn erfelijkheid en polymorfisme in referentietypen?
sobes.tech AI
Antwoord van AI
Overerving is een mechanisme waarmee een nieuwe klasse (subklasse/afgeleide klasse) eigenschappen (velden) en gedrag (methoden) van een bestaande klasse (superklasse/ouderklasse) kan erven, waardoor functionaliteit wordt uitgebreid of overschreven. Dit bevordert hergebruik van code en legt "is-a" relaties vast.
Polymorfisme is de mogelijkheid dat objecten van verschillende klassen verschillend reageren op dezelfde methode-aanroep, afhankelijk van hun specifieke type tijdens runtime. Het biedt flexibiliteit en uitbreidbaarheid van de code, door objecten van subklassen via een referentie naar de superklasse te behandelen.
In referentietypen (klassen) spelen deze concepten een sleutelrol:
- Overerving: De subklasse krijgt toegang tot de leden van de superklasse en kan eigen leden toevoegen of het gedrag van geërfde methoden aanpassen (overschrijven - overriding). Een object van de subklasse kan overal worden gebruikt waar een object van de superklasse wordt verwacht.
- Polymorfisme: Verschillende objecten die tot dezelfde erfhiërarchie behoren, kunnen met dezelfde code worden behandeld, waarbij dezelfde methode wordt aangeroepen, maar de implementatie van die methode is specifiek voor het type object tijdens runtime.
Voorbeeld in Java:
// Superklasse (ouderklasse)
class Animal {
public void makeSound() {
System.out.println("Maakt geluid");
}
}
// Subklasse (kindklasse), erft van Animal
class Dog extends Animal {
// Overschrijft de methode van de superklasse
@Override
public void makeSound() {
System.out.println("Waf!");
}
}
// Subklasse (kindklasse), erft van Animal
class Cat extends Animal {
// Overschrijft de methode van de superklasse
@Override
public void makeSound() {
System.out.println("Miauw!");
}
}
// Voorbeeld van polymorfisme
public class PolymorphismExample {
public static void main(String[] args) {
Animal myAnimal = new Animal(); // object van de superklasse
Animal myDog = new Dog(); // object van de subklasse, referentie naar superklasse
Animal myCat = new Cat(); // object van de subklasse, referentie naar superklasse
myAnimal.makeSound(); // Output: Maakt geluid
myDog.makeSound(); // Output: Waf! (polymorfisme - methode van Dog)
myCat.makeSound(); // Output: Miauw! (polymorfisme - methode van Cat)
}
}