Difference Between  Inheriting a Method vs Overriding a Method 

1. Inheriting a Method

✅ Definition:

An inherited method is a method that is not redefined in the child class but is available for use because the class inherits from a parent that defines it.

✅ Behavior:

  • You can use the method directly in your class.
  • You do not change its logic.
  • You’re simply benefiting from the existing functionality.

📌  Odoo Example:

class CustomSaleOrder(models.Model):

    _inherit = ‘sale.order’

    def some_custom_logic(self):

        self.action_confirm()  # This method is inherited from ‘sale.order’

  • Here, action_confirm() is inherited. You are calling it as-is, without changing its logic.

2. Overriding a Method

✅ Definition:

An overridden method is a method that is explicitly redefined in your child class to modify or extend its original behavior.

✅ Behavior:

An overridden method is a method that is explicitly redefined in your child class to modify or extend its original behavior.

📌  Odoo Example:

class CustomSaleOrder(models.Model):

    _inherit = ‘sale.order’


    def action_confirm(self):

        # Custom logic

        _logger.info(f“Confirming sale order: {self.name}”)

        # Call original method

        return super().action_confirm()

Here, action_confirm() is overridden — the method exists in the parent, and you are modifying its behavior.

🧠 Key Differences

Criteria
Inherited Method
Overridden Method
Defined in child class ❌ No ✅ Yes
Logic changed ❌ No ✅ Yes
Uses super() ❌ Not applicable ✅ Usually
Purpose To use parent method To customize parent method
Example Call action_confirm() as-is Redefine action_confirm() to add logic

✅ Summary Table

  • Inheriting a method: Using it without changing its logic.
  • Overriding a method: Redefining it to change or extend its behavior.
Every overridden method is inherited, but not every inherited method is overridden.