Programming Polymorphism (OCR A Level Computer Science): Revision Note
Exam code: H446
Programming Polymorphism
To implement polymorphism in code, you need a solid grasp of object-oriented programming, especially inheritance and method overriding
Run-time polymorphism
This happens when a subclass overrides a method defined in a superclass, and the correct version is chosen at run-time, not compile-time
How do you Define Polymorphism?
Example scenario: Animal, Dog, and Cat
Step-by-step logic (pseudocode)
Define a superclass called
Animalwith a methodspeak()that does nothingCreate subclasses called
DogandCatthat inherit fromAnimalIn each subclass, override the
speak()method to provide a specific outputWrite a function
make_sound(animal)that accepts an object of typeAnimaland calls itsspeak()methodCreate instances of
DogandCat, and pass them tomake_sound()
CLASS Animal
METHOD speak()
// Empty method (acts as a placeholder)
CLASS Dog EXTENDS Animal
METHOD speak()
OUTPUT "Woof"
CLASS Cat EXTENDS Animal
METHOD speak()
OUTPUT "Meow"
PROCEDURE make_sound(animal : Animal)
CALL animal.speak()
// Create objects
DECLARE myDog : Dog
DECLARE myCat : Cat
SET myDog TO NEW Dog()
SET myCat TO NEW Cat()
// Demonstrate polymorphism
CALL make_sound(myDog) // Outputs: Woof
CALL make_sound(myCat) // Outputs: MeowAnimalis a base class with aspeak()methodDogandCatare subclasses that override thespeak()methodmake_sound()takes anAnimalobject but calls the correct version ofspeak()depending on whether it’s aDogor aCatThis demonstrates run-time polymorphism – the method call is resolved based on the actual type of the object
Python
class Animal:
def speak(self):
pass # Placeholder method
class Dog(Animal):
def speak(self):
print("Woof")
class Cat(Animal):
def speak(self):
print("Meow")
def make_sound(animal):
animal.speak()
dog = Dog()
cat = Cat()
make_sound(dog) # Outputs: Woof
make_sound(cat) # Outputs: MeowThis shows method overriding
The
make_sound()function relies on dynamic method binding
Java
class Animal {
public void speak() {
// Empty default method
}
}
class Dog extends Animal {
@Override
public void speak() {
System.out.println("Woof");
}
}
class Cat extends Animal {
@Override
public void speak() {
System.out.println("Meow");
}
}
public class Main {
public static void makeSound(Animal animal) {
animal.speak();
}
public static void main(String[] args) {
Dog dog = new Dog();
Cat cat = new Cat();
makeSound(dog); // Outputs: Woof
makeSound(cat); // Outputs: Meow
}
}Recognise use of a superclass reference (
Animal animal) pointing to a subclass objectPolymorphism occurs when
animal.speak()dynamically calls the correct overridden method
Unlock more, it's free!
Did this page help you?