Java Language
super słowo kluczowe
Szukaj…
Zastosowanie super słów kluczowych z przykładami
super słowo kluczowe odgrywa ważną rolę w trzech miejscach
- Poziom konstruktora
- Poziom metody
- 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.