Поиск…


Использование ключевого слова Super с примерами

Супер ключевое слово выполняет важную роль в трех местах

  1. Уровень конструктора
  2. Уровень метода
  3. Переменный уровень

Уровень конструктора

super используется для вызова конструктора родительского класса. Этот конструктор может быть конструктором по умолчанию или параметризованным конструктором.

  • Конструктор по умолчанию: super();

  • Параметрированный конструктор: 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();
       }
     }
    

Примечание : super() должен быть первым оператором в конструкторе, иначе мы получим сообщение об ошибке компиляции.

Уровень метода

super ключевое слово также может быть использовано в случае переопределения метода. super можно использовать для вызова или вызова метода родительского класса.

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

Примечание . Если переопределение метода отсутствует, нам не нужно использовать super ключевое слово, чтобы вызвать метод родительского класса.

Переменный уровень

super используется для ссылки на экземпляр экземпляра родительского класса. В случае наследования может быть возможность базового класса, а производный класс может иметь одинаковые элементы данных. Чтобы различать элемент данных базового / родительского класса и производного / дочернего класса, в контексте производного класса данные базового класса членам должно предшествовать ключевое слово super .

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

Примечание . Если мы не будем писать super ключевое слово до имени элемента данных базового класса, оно будет называться текущим членом данных класса и элементом данных базового класса, которые скрыты в контексте производного класса.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow