Dart - Super and This keyword - GeeksforGeeks

08 Mar, 2022
In Dart, super keyword is used to refer immediate parent class object. It is used to call properties and methods of the superclass. It does not call the method, whereas when we create an instance of subclass than that of the parent class is created implicitly so super keyword calls that instance.
Advantages of super keyword:
It can be used to access the data members of parent class when both parent and child have member with same name.
It is used to prevent overriding the parent method.
It can be used to call parameterized constructor of parent class.
Syntax:
// To access parent class variables
super.variable_name;

// To access parent class method
super.method_name();
Example #1: Showing the flow of object creation in inheritance.
class SuperGeek {      // Creating parent constructor    SuperGeek()    {        print("You are inside Parent constructor!!");    }}  class SubGeek extends SuperGeek {      // Creating child constructor    SubGeek()    {        print("You are inside Child constructor!!");    }}  void main(){    SubGeek geek = new SubGeek();}
Output:
You are inside Parent constructor!!
You are inside Child constructor!!
 
Example #2: Accessing parent class variables
// Creating Parent classclass SuperGeek {    String geek = "Geeks for Geeks";}  // Creating child classclass SubGeek extends SuperGeek {      // Accessing parent class variable    void printInfo()    {        print(super.geek);    }}  void main(){    // Creating child class object    SubGeek geek = new SubGeek();      // Calling child class method    geek.printInfo();}
Output:
Geeks for Geeks
 
Example #3: Accessing parent class methods
class SuperGeek {      // Creating a method in Parent class    void printInfo()    {        print("Welcome to Gfg!!\nYou are inside parent class.");    }}  class SubGeek extends SuperGeek {      void info()    {        print("You are calling method of parent class.");          // Calling parent class method        super.printInfo();    }}  void main(){    SubGeek geek = new SubGeek();    geek.info();}
Output:
You are calling method of parent class.
Welcome to Gfg!!
You are inside parent class.
While super keyword is used to call parent class, this keyword is used to call the class itself.
Advantages of this keyword:
It can be used to call instance variable of current class.
It can be used to set the values of the instance variable.
It can be used to return the current class instance.
Using this keyword in Dart –
// Creating classclass Geek {      // Creating an instance variable    String geek_info;      // Creating a parameterized constructor    Geek(String info)    {        // Calling instance variable using this keyword.        this.geek_info = info;    }    void printInfo()    {        print("Welcome to $geek_info");    }}  void main(){    Geek geek = new Geek("Geeks for Geeks");    // Calling method    geek.printInfo();}
Output:
Welcome to Geeks for Geeks
kothavvsaakash
Dart-Keywords
Dart
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Comments
Old Comments
Flutter - DropDownButton Widget
Flutter - Padding Widget
Dart - Null Aware Operators
Flutter - BoxShadow Widget
Format Dates in Flutter
Flutter - Stack Widget
Dart - Data Types
Operators in Dart
ListView Class in Flutter
Flutter - Dialogs