The super keyword can be used by classes that are extended from virtual or abstract classes. By using super, you can override constructors and methods from the parent class.
For example, if you have the following virtual class:
1public virtual with sharing class SuperClass{2 public String mySalutation;3 public String myFirstName;4 public String myLastName;56 public SuperClass(){78 mySalutation = 'Mr.';9 myFirstName = 'Carl';10 myLastName = 'Vonderburg';11}1213 public SuperClass(String salutation, String firstName, String lastName){1415 mySalutation = salutation;16 myFirstName = firstName;17 myLastName = lastName;18}1920 public virtual void printName(){2122 System.debug('My name is ' + mySalutation + myLastName);23}2425 public virtual String getFirstName(){26 return myFirstName;27}28}
You can create the following class that extends Superclass and overrides its printName method:
1public with sharing class Subclass extends Superclass{2 public override void printName(){3 super.printName();4 System.debug('But you can call me ' + super.getFirstName());5}6}
The expected output when calling Subclass.printName is My name is Mr. Vonderburg. But you can call me Carl.
You can also use super to call constructors. Add the following constructor to SubClass: