Sök…


Super sökordsanvändning med exempel

super nyckelord spelar en viktig roll på tre platser

  1. Konstruktornivå
  2. Metodnivå
  3. Variabel nivå

Konstruktornivå

super nyckelord används för att kalla förälderklasskonstruktör. Denna konstruktör kan vara standardkonstruktör eller parametrerad konstruktör.

  • Standardkonstruktör: super();

  • Parameteriserad konstruktör: 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();
       }
     }
    

Obs : super() måste vara det första uttalandet i konstruktören annars kommer vi att få kompilationsfelmeddelandet.

Metodnivå

super nyckelord kan också användas i fall av metodöverskridande. super nyckelord kan användas för att åberopa eller ringa föräldraklass metod.

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(); 
   }
}

Obs : Om det inte finns någon åsidosättande av metoden behöver vi inte använda super nyckelord för att ringa föräldraklassmetoden.

Variabel nivå

super används för att hänvisa till omedelbar föräldrarklassinstansvariabel. Vid arv kan det finnas möjlighet till basklass och härledd klass kan ha liknande datamedlemmar. För att skilja mellan datamedlemmen i bas- / förälderklassen och härledd / barnklass, i samband med härledd klass basklassdata medlemmar måste föregås av super sökord.

//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();    
    }
}

Obs : Om vi inte skriver super nyckelord innan namnet på basklassdatamedlemmen kommer det att hänvisas till nuvarande klassdatamedlem och basklassmedlemmedlem är dolda i samband med härledd klass.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow