One method name behaving differently depending on the object it is called on.
Calling draw() on a Circle and on a Square runs different code through the same instruction.
Note
All five concepts are examinable at standard level and higher level in this statement, because B3.1.1 asks you to model entities using them.
Writing code that uses inheritance, polymorphism, abstraction, composition or aggregation is B3.2 and higher level only.
At standard level you work with one class, plus a driver class that creates objects from it.
So an SL answer here defines inheritance and gives an example; it does not have to implement one.
Advantages of OOP
Code reusability
Inheritance lets a subclass reuse a superclass's tested code instead of copying it.
A Car class inherited by ElectricCar keeps one copy of the shared braking logic.
Modularity
Encapsulation splits a system into classes that can be understood and changed one at a time.
Changing how BankAccount stores its balance does not break any class that only calls deposit().
Real-world modelling
Classes map onto the entities a problem already talks about, so the design follows the problem description.
A school system needs Student, Teacher and Course objects, which is how a school describes itself.
Concurrent development
Because classes communicate only through their public methods, separate programmers can build different classes at the same time.
One developer writes Payment while another writes Order, agreeing only on the method names between them.
Controlled access to data
Private attributes reached only through public methods let the class validate every change before accepting it.
A withdraw() method can refuse an amount larger than the balance; a public balance variable cannot.
Exam technique
Evaluate and discuss need both sides plus a position, so never answer with advantages alone.
Name the mechanism, not the label: "encapsulation makes it secure" earns little.
Write instead that the balance is private, so external code must call withdraw(), which rejects an overdraft.
Tie every advantage to the scenario in the question, which is the most common place marks are lost in this subject.
Disadvantages of OOP
Added complexity for small problems
A class, a constructor and a driver class are a lot of structure around a task a few lines of procedural code would finish.
A script that converts a temperature does not benefit from a Temperature class.
Performance and memory overhead
Every object carries its own copy of the instance variables, and creating and destroying objects costs processing time.
This matters on an embedded controller with kilobytes of RAM, where procedural code is often chosen instead.
Steeper learning curve
The paradigm has to be learned before any of it pays off, and inheritance and polymorphism are where beginners stall.
A team new to OOP can produce a worse design than the procedural one it replaced.
Over-engineering through inheritance
Deep inheritance hierarchies couple classes tightly, so a change to a superclass ripples through every subclass below it.
Composition is often the better answer where the relationship is "has-a" rather than "is-a".
Choosing the Paradigm: OOP Suits Some Problems and Not Others
The examinable skill is matching the paradigm to a given scenario, so work through the shape of the problem rather than reaching for a verdict.
Reach for OOP when
The problem describes several kinds of entity with their own data and behaviour, such as a hospital booking system with Patient, Doctor and Appointment.
Many similar items each need their own state, such as every enemy in a game tracking its own health and position.
A team is building the system and needs to divide it into independent parts.
The system is expected to grow, so new types can be added as new classes.
Reach for procedural code when
The task is a short sequence of steps on one data set, such as reading a file and printing a total.
Hardware is constrained and the object overhead is not affordable.
The program is a one-off utility that nobody will extend.
Common Mistake
Mixing up encapsulation and abstraction. Encapsulation restricts access to data; abstraction hides implementation detail behind a simpler interface.
Abstraction is defined in B3.2.3, higher level only, so it is not one of the five concepts this statement asks for.
Assuming OOP is always faster or better. It usually adds overhead compared with equivalent procedural code.
Answering with definitions only. Examiners want a named class or object from the scenario in the question.
Saying "OOP is modular" and stopping. Always give the why: which class could be changed without breaking which other class.
Treating polymorphism as overloading only. Method overriding in a subclass is the form the guide leads with.
Modelling One Entity End to End: The Book Class
Working one entity through the whole paradigm shows where each concept lands.
A library needs to track books, so Book becomes the class and each physical book becomes an object.
Title, author and isOnLoan are the attributes; lend() and returnBook() are the methods.
The attributes are private and reached only through methods, which is encapsulation.
If the library later adds audiobooks, an Audiobook subclass inherits Book and adds duration.
Calling describe() on a Book and on an Audiobook produces different output, which is polymorphism.
At standard level you would build the Book class and a driver class only, stopping before the subclass.
Active recall
What is the difference between a class and an object?
Name the five OOP concepts B3.1.1 asks you to model an entity with.
Give one advantage of OOP and explain the mechanism that produces it, not just its name.
State two reasons a programmer might choose procedural code over OOP for a particular problem.
Which of the five concepts can standard level students be asked to define but not to implement in code?