Java Language
супер ключевое слово
Поиск…
Использование ключевого слова Super с примерами
Супер ключевое слово выполняет важную роль в трех местах
- Уровень конструктора
- Уровень метода
- Переменный уровень
Уровень конструктора
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
ключевое слово до имени элемента данных базового класса, оно будет называться текущим членом данных класса и элементом данных базового класса, которые скрыты в контексте производного класса.