W3docs

es6 · ES6 Basics

Why is super used?

Answers

  • Is used for creating and initializing an object.
  • It's a simple function.
  • Is used as an "object" which calls the parent class.
  • Is used as a "function" which calls the parent's constructor.
# Understanding the Use of Super in Object-Oriented Programming In Object-Oriented Programming(OOP), `super` is a keyword used to call the constructor of the parent class. This terminology is fundamental with languages that support class-based inheritance, like Java, Python, and JavaScript. A constructor in programming is a method used to initialize an object's state. In Inheritance, a child class or subclass can inherit properties and methods from a parent class or superclass. In this context, `super` becomes a bridge that connects a subclass's constructor to its parent's constructor. #### Useful Application of Super One of the most common applications of `super` is when you have a subclass that needs to add some properties or redefine some methods, but you still want it to inherit the rest of the properties and methods from the parent class. Let's use a classic example to illustrate this: The relationship between Animals (as a parent class) and Dogs (as a subclass). First, we initialize the Animal class: ```Python class Animal: def __init__(self, name, age): self.name = name self.age = age ``` Then when we want to create a Dog class that inherits from the Animal class but adds one more property, 'breed', we use `super` to call the Animal class constructor: ```Python class Dog(Animal): def __init__(self, name, age, breed): super().__init__(name, age) self.breed = breed ``` So the Dog class inherits the 'name' and 'age' properties from the Animal class and only needs to define the 'breed' property. This way, code reusability is promoted and the codebase is made more maintainable with this approach. #### Additional Notes on Best Practices For any OOP language that uses `super`, it is recommended to always call the superconstructor in the constructor of the subclass. This will ensure that all the inherited properties are correctly set up before we start adding or modifying them in the subclass. It's good practice to use the `super` keyword instead of directly calling the superclass method. This practice ensures that the correct methods are always called, even if the class hierarchy changes later. In conclusion, understanding the `super` keyword is crucial for code organization, reusability and making your code easy to understand and maintain.