Java -polymorfisme


Java-polymorfisme

Polymorfisme betekent "vele vormen", en het komt voor wanneer we veel klassen hebben die door overerving aan elkaar gerelateerd zijn.

Zoals we in het vorige hoofdstuk hebben aangegeven; Overerving laat ons attributen en methoden erven van een andere klasse. Polymorfisme gebruikt die methoden om verschillende taken uit te voeren. Hierdoor kunnen we één handeling op verschillende manieren uitvoeren.

Denk bijvoorbeeld aan een superklasse met de naam Animaldie een methode heeft met de naam animalSound(). Subklassen van dieren kunnen varkens, katten, honden, vogels zijn - en ze hebben ook hun eigen implementatie van een dierengeluid (het varken knort en de kat miauwt, enz.):

Voorbeeld

class Animal {
  public void animalSound() {
    System.out.println("The animal makes a sound");
  }
}

class Pig extends Animal {
  public void animalSound() {
    System.out.println("The pig says: wee wee");
  }
}

class Dog extends Animal {
  public void animalSound() {
    System.out.println("The dog says: bow wow");
  }
}

Onthoud uit het hoofdstuk Overerving dat we het extendssleutelwoord gebruiken om van een klasse te erven.

Nu kunnen we objecten Pigen Dogobjecten maken en de animalSound()methode voor beide aanroepen:

Voorbeeld

class Animal {
  public void animalSound() {
    System.out.println("The animal makes a sound");
  }
}

class Pig extends Animal {
  public void animalSound() {
    System.out.println("The pig says: wee wee");
  }
}

class Dog extends Animal {
  public void animalSound() {
    System.out.println("The dog says: bow wow");
  }
}

class Main {
  public static void main(String[] args) {
    Animal myAnimal = new Animal();  // Create a Animal object
    Animal myPig = new Pig();  // Create a Pig object
    Animal myDog = new Dog();  // Create a Dog object
    myAnimal.animalSound();
    myPig.animalSound();
    myDog.animalSound();
  }
}

Waarom en wanneer "Overerving" en "Polymorfisme" gebruiken?

- Het is handig voor herbruikbaarheid van code: hergebruik attributen en methoden van een bestaande klasse wanneer u een nieuwe klasse aanmaakt.