Guide to High School Computer Science
  • ๐Ÿ’ปIntroduction
    • windows & Python Development
    • macOS & Python Development
    • Visual Studio Code Settings
    • Set up Github
    • Author Page
  • ๐Ÿง Prerequisite Skills
    • Keyboard Typing
    • Files & Directories
    • Use of Command Line
    • Git & GitHub
    • Markdown
    • Starting Your Python Project
  • ๐ŸPython Programming
    • ๐ŸŽPython Basics
      • What is Python?
      • Procedural Programming & Programming Paradigms
      • String Formatting
      • Data Types
      • Input & Output to Console
      • Working with Numbers
      • Useful Built-in Functions
      • Math & Random Module
      • Boolean Data Object
      • Comparison, Logical, and Membership Operators
      • If Statements
      • Binary Decisions
      • Multiple Decisions
      • Nested Conditions
      • [EXTRA] Bitwise Operators
      • [EXTRA] Python Style Guide
    • โฎ๏ธIterations
      • Introduction to While Loops
      • Infinite Loop
      • Controlling Your While Loops
      • Introduction to For Loops
      • For Loops w/ Numeric Sequences
      • For Loops w/ Strings & Lists
      • Iterable Functions w/ For Loops
    • ๐Ÿ“ฆCollections
      • Strings
        • String Basics
        • String Indexing
        • String Slicing
        • String Operators & Functions
        • Basic String Methods
        • String Methods Extended
        • String Methods Document
      • Tuples & Lists
        • Tuples
        • List Basics
        • List are Mutable
        • Adding Items to a List
        • Removing Items from a List
        • Search & Reverse a List
        • List Comprehension
        • List Methods Document
      • Sets
      • Dictionary
      • How to Store Multiple Data Items
    • ๐Ÿ’กDefining Functions
      • Functions
      • print() vs return
      • Pre-determined Arguments
      • Nested Functions
      • Map & Filter
      • [Extra] Dynamic Arguments
    • ๐Ÿ’พFile I/O
      • How to Save Text to an External File
      • Reading CSV in Python
      • Reading JSON in Python
    • ๐Ÿ”จBasic Python Projects
      • Basic Calculator
        • Improving the calculator
        • Exercise Set 1
        • Exercise Set 2
        • ๐Ÿ’ŽStreamlit Application #1
      • Basic Password Generator
        • Exercise Set 3
        • Exercises Related to Math
        • ๐Ÿ’ŽStreamlit Application #2
      • A To-Do Task List
    • โณIntroduction to Algorithmic Thinking
      • Big-O Notation
      • Basic Algorithms
        • Linear Search
        • Binary Search
        • Basic Sorting Algorithms
      • Recursion
      • Brute Force Algorithms
      • Greedy Algorithm
        • Time on Task (CCC 2013 J4)
        • Dijkstraโ€™s Algorithm
      • Divide and Conquer
        • Merge Sort
      • Dynamic Programming
    • ๐ŸคฏObject Oriented Programming
      • Class & Objects (Definitions)
      • OOP in Python
      • Encapsulation
      • Polymorphism
      • Inheritance & Overriding
      • Override Magic Methods
      • Case Study: 2D Vectors
      • Case Study: Deck of Cards
      • Exercise
      • Abstract Data Types
      • Case Study: Static 1D Array From Java
    • Competitive Programming
      • Is This Sum Possible?
        • Is the dataset sorted?
        • Searching for a value
        • Determine if the difference between an integer from the array and the target value exists
        • Sorting Algorithms
        • Using Two Pointers
      • Two Sum - LeetCode
        • Generate all possible pairs of values
        • Subtract each value from the target, see if the difference exists in the list
      • Longest Common Prefix - LeetCode
        • Compare all possible prefixes
        • Create the longest common prefix with the direct neighbour
      • Length of Last Word - LeetCode
        • Compare all possible prefixes
      • Where can I go from one point to another?
      • Sample Outline
    • IB Recipe Book
  • ๐Ÿ’พPython & Databases
    • Intro to Databases & Data Modeling
      • Common Data Types in SQL
      • Introduction to ERDs
      • Primary Keys and Foreign Keys
      • Database Normalization
    • What is SQL?
      • Getting Started
      • SELECT Queries
        • Selection with Conditions
        • Selection with Fuzziness
        • Selection and Sorting in Order
        • Selection without Duplicates
        • Selection with Limited Number of Outputs
      • AGGREGATE Queries
        • Counting Rows
        • Sum, Average, Min/Max Queries
        • Working with Aggregate Queries
        • Power of using Groups
        • Exercise
      • Interacting with Multiple Table
      • Inserting Data
      • External Resource
  • โ˜•Java Essentials
    • Basics
      • Starting Java
      • Data & Variables
      • Handling User Inputs & Type Conversion
      • Arithmetic
      • IPO Model
      • Basic Built-in Methods
      • Exercise Questions
    • Conditionals
      • Boolean Operators
      • Compare Strings
      • If Statements
      • If Else Statements
      • Making Multiple Decisions
      • Using Switch
      • Flowchart Symbols
      • Exercise Questions
    • Iterations
      • While Loops
      • For Loop
      • Exercises
    • Java Type Casting
    • Strings
      • Common String Practices
      • String Formatting
      • Java Special Characters
    • Collection
      • Arrays
      • For Each Loop
      • ArrayList
      • Exercise Questions
    • Static Methods
      • (Aside) Clearing your Console
    • Randomness in Java
    • Delayed Output in Java
    • Java Output Formatting
    • Java Style Guide
  • ๐Ÿ› ๏ธJavaScript Programming
    • Our Programming Editor & Workflow
      • Hello, world!
      • Commenting & Variables
      • Data in JavaScript
      • Operators
      • String Formatting
      • Getting User Input
    • JavaScript Exercise Set 1
    • Making Decisions
      • Comparing Values
      • Combining Boolean Comparisons
      • Creating Branches
    • JavaScript Exercise Set 2
    • While Loops
      • Infinite While Loop
      • While Loops and Numbers
      • While Loops and Flags
      • While loops w/ Strings
    • JavaScript Exercise Set 3
    • Subprograms & Functions
      • Creating a Function in JavaScript
      • Function with Input and Assignable Output
    • JavaScript Exercise Set 4
  • ๐Ÿ’พTopics in CS
    • Computer Environments & Systems
      • Computer Components
        • In-depth Explanations
      • File Maintenance
      • Computer & Safety
      • Software Development
      • Bits & Binary
    • Careers related to Computer Science
    • Postsecondary Opportunities
Powered by GitBook
On this page
  • Inheritance
  • Advantages of Inheritance
  • Disadvantages of Inhertiance
  • Key Concepts of Inheritance
  • Example Inheritance Code
  • super() method
  • Overriding (Polymorphism)
  1. Python Programming
  2. Object Oriented Programming

Inheritance & Overriding

Inheritance

In object-oriented programming (OOP), inheritance is a mechanism that allows one class (called the subclass or derived class) to inherit the properties and behaviors of another class (called the superclass or base class). Inheritance is a key concept in OOP that facilitates code reuse and promotes the creation of a hierarchical structure for organizing and modeling software.

Advantages of Inheritance

  • Inheritance minimizes code repetition -> Since a child class inherits all attributes and methods from the parent, the child class does not need to implement the same attributes and methods

  • Inheritance promotes organization and hierarchy -> Inheritance cause different classes to be related to each other based on how each class inherits from one and another

Disadvantages of Inhertiance

  • Inheritance cause classes to be dependent -> If a parent class has inefficiencies and errors, then a child inherits the same inefficiencies and errors

  • Inheritance causes design issues -> By trying to create classes dependent to each other, you may not be able to create a class that properly satisfies a program requirement because the class must follow the rules of the parents it is attached to.

โ€œWhen I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck.โ€

James Whitcomb Riley It is not always required or even recommended to use inheritance, unless you are 100% sure you are required to do so.

Key Concepts of Inheritance

Base Class (Superclass): The class whose properties and behaviors are inherited by another class.

Derived Class (Subclass): The class that inherits from another class.

Method Overriding: The ability of a subclass to provide a specific implementation for a method that is already defined in its superclass.

Code Reusability: Inheritance promotes the reuse of code by allowing common functionality to be defined in a base class and shared among multiple subclasses.

Hierarchy: Inheritance enables the creation of a hierarchical structure of classes, where more specialized classes inherit from more general ones.

Example Inheritance Code

# Inheriting Vehicle
class Vehicle:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year

    def display_info(self):
        print(f"{self.year} {self.make} {self.model}")

class Car(Vehicle):
    def __init__(self, make, model, year, num_doors):
        super().__init__(make, model, year)
        self.num_doors = num_doors

    def display_info(self):
        super().display_info()
        print(f"Number of doors: {self.num_doors}")

# Example usage
my_vehicle = Vehicle("Toyota", "Camry", 2022)
my_vehicle.display_info()

my_car = Car("Ford", "Mustang", 2023, 2)
my_car.display_info()
# Output
Toyota Camry 2022
Ford Mustang 2023
Number of doors: 2
  • Vehicle is the base class with common attributes like make, model, and year, as well as a method display_info to display information about the vehicle.

  • Car is a subclass of Vehicle. It inherits the attributes from Vehicle using super().__init__(make, model, year), and it also has an additional attribute num_doors specific to cars. The display_info method is overridden to include information about the number of doors.

super() method

"Return a proxy object that delegates method calls to a parent or sibling class of type. This is useful for accessing inherited methods that have been overridden in a class."

- Python Documentation

super() in Python is a built-in function that is used to call a method from a parent class. It is often used in the context of inheritance to invoke a method or constructor from the parent class. This allows you to extend or override functionality in the child class while still reusing code from the parent class.

By using super(), you make your code more maintainable and allow for changes in the base class without having to update the derived classes manually.

This ensures that the make, model, and year attributes are initialized in the Car instance, leveraging the initialization logic from the Vehicle class.

Overriding (Polymorphism)

Overriding occurs when two methods with the same method name and parameters within different classes. Overriding is a fundamental concept that shows polymorphism being evident in OOP.

Here are some scenarios when overriding occurs.

class Vehicle:
    def __init__(self, make, model, year):
        self.make = make
        self.model = model
        self.year = year

    def display_info(self):
        print(f"{self.year} {self.make} {self.model}")

class Car(Vehicle):
    def __init__(self, make, model, year, num_doors):
        super().__init__(make, model, year)
        self.num_doors = num_doors

    def display_info(self):
        super().display_info()
        print(f"Number of doors: {self.num_doors}")

There are two classes here:

  1. A parent class called Vehicle

  2. A child class called Car

Both Classes have the methods: display_info()

The method has the same parameters

The method behaves differently in each class; therefore, the child class is overriding the behaviour from the parent class.

PreviousPolymorphismNextOverride Magic Methods

Last updated 6 months ago

In , super().__init__(make, model, year) is used to call the constructor (__init__ method) of the parent class (Vehicle).

๐Ÿ
๐Ÿคฏ
You can also override built-in magic-methods/built-in base methods from python standard library.
our example code