Zoeken…


Super trefwoord gebruik met voorbeelden

super sleutelwoord speelt een belangrijke rol op drie plaatsen

  1. Constructeursniveau
  2. Methode niveau
  3. Variabel niveau

Constructeursniveau

super sleutelwoord wordt gebruikt om constructeur van bovenliggende klasse aan te roepen. Deze constructor kan standaardconstructor of geparametriseerde constructor zijn.

  • Standaard constructor: super();

  • Geconfigureerde constructor: super(int no, double amount, String name);

     class Parentclass
     {
        Parentclass(){
           System.out.println("Constructor of Superclass");
        }
     }
     class Subclass extends Parentclass
     {
        Subclass(){
         /* Compile adds super() here at the first line
          * of this constructor implicitly
          */
         System.out.println("Constructor of Subclass");
        }
        Subclass(int n1){
         /* Compile adds super() here at the first line
          * of this constructor implicitly
          */
         System.out.println("Constructor with arg");
        }
        void display(){
         System.out.println("Hello");
        }
        public static void main(String args[]){
         // Creating object using default constructor
         Subclass obj= new Subclass();
         //Calling sub class method 
            obj.display();
            //Creating object 2 using arg constructor
            Subclass obj2= new Subclass(10);
            obj2.display();
       }
     }
    

Opmerking : super() moet de eerste instructie in constructor zijn, anders krijgen we het compilatiefoutbericht.

Methode niveau

super sleutelwoord kan ook worden gebruikt in geval van methode overschrijven. super sleutelwoord kan worden gebruikt om de methode van de bovenliggende klasse aan te roepen of aan te roepen.

class Parentclass
{
   //Overridden method
   void display(){
    System.out.println("Parent class method");
   }
}
class Subclass extends Parentclass
{
   //Overriding method
   void display(){
    System.out.println("Child class method");
   }
   void printMsg(){
    //This would call Overriding method
    display();
    //This would call Overridden method
    super.display();
   }
   public static void main(String args[]){        
    Subclass obj= new Subclass();
    obj.printMsg(); 
   }
}

Opmerking: Als er geen methode dwingende dan hoeven we niet te gebruiken super sleutelwoord om call bovenliggende klasse methode.

Variabel niveau

super wordt gebruikt om te verwijzen naar de instantvariabele instantieklasse variabele. In het geval van overerving, kan er een mogelijkheid zijn dat de basisklasse en de afgeleide klasse vergelijkbare gegevensleden hebben. leden moeten worden voorafgegaan door super superzoekwoord.

//Parent class or Superclass
class Parentclass
{
    int num=100;
}
//Child class or subclass
class Subclass extends Parentclass
{
    /* I am declaring the same variable 
     * num in child class too.
     */
    int num=110;
    void printNumber(){
     System.out.println(num); //It will print value 110
     System.out.println(super.num); //It will print value 100
    }
    public static void main(String args[]){
       Subclass obj= new Subclass();
       obj.printNumber();    
    }
}

Let op: Als we schrijven niet super trefwoord voor de basisklasse data lid naam dan zal worden aangeduid als de huidige klasse data-lid en basisklasse data lid zijn verborgen in het kader van de afgeleide klasse.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow