Java Language
super nyckelord
Sök…
Super sökordsanvändning med exempel
super nyckelord spelar en viktig roll på tre platser
- Konstruktornivå
- Metodnivå
- 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.