Szukaj…


Zastosowanie super słów kluczowych z przykładami

super słowo kluczowe odgrywa ważną rolę w trzech miejscach

  1. Poziom konstruktora
  2. Poziom metody
  3. Zmienny poziom

Poziom konstruktora

super słowo kluczowe służy do wywołania konstruktora klasy nadrzędnej. Ten konstruktor może być konstruktorem domyślnym lub konstruktorem sparametryzowanym.

  • Domyślny konstruktor: super();

  • Konstruktor sparametryzowany: 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();
       }
     }
    

Uwaga : super() musi być pierwszą instrukcją w konstruktorze, w przeciwnym razie otrzymamy komunikat o błędzie kompilacji.

Poziom metody

super słowo kluczowe może być również użyte w przypadku zastąpienia metody. super słowo kluczowe może być użyte do wywołania lub wywołania metody klasy nadrzędnej.

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

Uwaga : Jeśli nie ma zastąpienia metody, nie musimy używać super słowa kluczowego, aby wywołać metodę klasy nadrzędnej.

Zmienny poziom

super służy do odwoływania się do zmiennej instancji klasy nadrzędnej. W przypadku dziedziczenia może istnieć możliwość, że klasa bazowa i klasa pochodna mogą mieć podobne elementy danych. W celu rozróżnienia między elementem danych klasy bazowej / macierzystej a klasą pochodną / potomną, w kontekście klasy pochodnej, dane klasy bazowej członkowie muszą być poprzedzeni super słowem kluczowym.

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

Uwaga : Jeśli nie piszemy super słowa kluczowego przed nazwą elementu danych klasy podstawowej, będzie on nazywany bieżącym elementem danych klasy, a element danych klasy podstawowej jest ukryty w kontekście klasy pochodnej.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow