Programming Polymorphism (OCR A Level Computer Science): Revision Note

Robert Hampton

Written by: Robert Hampton

Reviewed by: James Woodhouse

Updated on

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)

  1. Define a superclass called Animal with a method speak() that does nothing

  2. Create subclasses called Dog and Cat that inherit from Animal

  3. In each subclass, override the speak() method to provide a specific output

  4. Write a function make_sound(animal) that accepts an object of type Animal and calls its speak() method

  5. Create instances of Dog and Cat, and pass them to make_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: Meow
  • Animal is a base class with a speak() method

  • Dog and Cat are subclasses that override the speak() method

  • make_sound() takes an Animal object but calls the correct version of speak() depending on whether it’s a Dog or a Cat

  • This 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: Meow
  • This 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 object

  • Polymorphism occurs when animal.speak() dynamically calls the correct overridden method

You've read 0 of your 5 free revision notes this week

Unlock more, it's free!

Join the 100,000+ Students that ❤️ Save My Exams

the (exam) results speak for themselves:

Did this page help you?

Robert Hampton

Author: Robert Hampton

Expertise: Computer Science Content Creator

Rob has over 16 years' experience teaching Computer Science and ICT at KS3 & GCSE levels. Rob has demonstrated strong leadership as Head of Department since 2012 and previously supported teacher development as a Specialist Leader of Education, empowering departments to excel in Computer Science. Beyond his tech expertise, Robert embraces the virtual world as an avid gamer, conquering digital battlefields when he's not coding.

James Woodhouse

Reviewer: James Woodhouse

Expertise: Computer Science & English Subject Lead

James graduated from the University of Sunderland with a degree in ICT and Computing education. He has over 14 years of experience both teaching and leading in Computer Science, specialising in teaching GCSE and A-level. James has held various leadership roles, including Head of Computer Science and coordinator positions for Key Stage 3 and Key Stage 4. James has a keen interest in networking security and technologies aimed at preventing security breaches.

Download notes on Programming Polymorphism