Employee and Manager (Inheritance + Overriding)
Create an Employee class with a method calculatebonus() returning a fixed amount, and a Manager subclass that overrides calculatebonus() to return a higher amount.
What the problem means: two related but distinct "kinds" of thing (a regular employee and a manager) share most of their structure but differ in one specific calculation — a textbook use case for inheritance and method overriding.
Approach: Employee.calculatebonus() returns 1000. class Manager(Employee): redefines calculatebonus() to return 5000, completely replacing the parent's version for Manager objects.
Input: No input.
Output: Two lines: the Employee's bonus, then the Manager's bonus.
(none)
1000 5000
Hint 1
class Manager(Employee): makes Manager inherit everything Employee has.
Hint 2
Defining calculate_bonus() again inside Manager completely replaces (overrides) the version inherited from Employee.
Hint 3
Employee().calculate_bonus() and Manager().calculate_bonus() now return different values, even though both classes define a method with the same name.
Manager(Employee) inherits from Employee, so it would normally reuse Employee's calculatebonus(). But because Manager defines its own calculatebonus() with the same name, that new version overrides the inherited one — Manager objects always use Manager's version, Employee objects always use Employee's.