logo

Super słowo kluczowe w Javie

The Super słowo kluczowe w Javie jest zmienną referencyjną używaną do odwoływania się do bezpośredniego obiektu klasy nadrzędnej.

Za każdym razem, gdy tworzysz instancję podklasy, domyślnie tworzona jest instancja klasy nadrzędnej, do której odwołuje się super zmienna referencyjna.

Użycie super słowa kluczowego Java

  1. super może być użyte do odniesienia się do zmiennej instancji klasy nadrzędnej.
  2. super można użyć do wywołania bezpośredniej metody klasy nadrzędnej.
  3. super() może zostać użyta do wywołania bezpośredniego konstruktora klasy nadrzędnej.
Użycie słowa kluczowego Java Super

1) super służy do odwoływania się do zmiennej instancji klasy nadrzędnej.

Możemy użyć słowa kluczowego super, aby uzyskać dostęp do elementu danych lub pola klasy nadrzędnej. Jest używany, jeśli klasa nadrzędna i klasa podrzędna mają te same pola.

jakie są wymiary ekranu mojego komputera
 class Animal{ String color='white'; } class Dog extends Animal{ String color='black'; void printColor(){ System.out.println(color);//prints color of Dog class System.out.println(super.color);//prints color of Animal class } } class TestSuper1{ public static void main(String args[]){ Dog d=new Dog(); d.printColor(); }} 
Przetestuj teraz

Wyjście:

 black white 

W powyższym przykładzie klasy Animal i Dog mają wspólną właściwość color. Jeśli wydrukujemy właściwość color, domyślnie wydrukowany zostanie kolor bieżącej klasy. Aby uzyskać dostęp do właściwości nadrzędnej, musimy użyć słowa kluczowego super.

2) super można użyć do wywołania metody klasy nadrzędnej

Słowo kluczowe super może być również użyte do wywołania metody klasy nadrzędnej. Należy jej używać, jeśli podklasa zawiera tę samą metodę, co klasa nadrzędna. Innymi słowy, jest używany, jeśli metoda zostanie nadpisana.

 class Animal{ void eat(){System.out.println('eating...');} } class Dog extends Animal{ void eat(){System.out.println('eating bread...');} void bark(){System.out.println('barking...');} void work(){ super.eat(); bark(); } } class TestSuper2{ public static void main(String args[]){ Dog d=new Dog(); d.work(); }} 
Przetestuj teraz

Wyjście:

 eating... barking... 

W powyższym przykładzie obie klasy Animal i Dog posiadają metodę eat(), jeśli wywołamy metodę eat() z klasy Dog, domyślnie wywoła ona metodę eat() klasy Dog, ponieważ priorytet ma wartość local.

Aby wywołać metodę klasy nadrzędnej, musimy użyć słowa kluczowego super.

3) super służy do wywoływania konstruktora klasy nadrzędnej.

Słowo kluczowe super może być również użyte do wywołania konstruktora klasy nadrzędnej. Zobaczmy prosty przykład:

 class Animal{ Animal(){System.out.println('animal is created');} } class Dog extends Animal{ Dog(){ super(); System.out.println('dog is created'); } } class TestSuper3{ public static void main(String args[]){ Dog d=new Dog(); }} 
Przetestuj teraz

Wyjście:

 animal is created dog is created 

Uwaga: super() jest dodawana do każdego konstruktora klasy automatycznie przez kompilator, jeśli nie ma super() lub this().

Java jest świetna

Jak dobrze wiemy, domyślny konstruktor jest dostarczany przez kompilator automatycznie, jeśli nie ma konstruktora. Ale dodaje także super() jako pierwszą instrukcję.

Inny przykład słowa kluczowego super, w którym kompilator domyślnie udostępnia super().

 class Animal{ Animal(){System.out.println('animal is created');} } class Dog extends Animal{ Dog(){ System.out.println('dog is created'); } } class TestSuper4{ public static void main(String args[]){ Dog d=new Dog(); }} 
Przetestuj teraz

Wyjście:

 animal is created dog is created 

super przykład: prawdziwe zastosowanie

Zobaczmy prawdziwe zastosowanie super słowa kluczowego. Tutaj klasa Emp dziedziczy klasę Person, więc wszystkie właściwości Person zostaną domyślnie odziedziczone po Emp. Aby zainicjować całą właściwość, używamy konstruktora klasy nadrzędnej z klasy podrzędnej. W ten sposób ponownie używamy konstruktora klasy nadrzędnej.

 class Person{ int id; String name; Person(int id,String name){ this.id=id; this.name=name; } } class Emp extends Person{ float salary; Emp(int id,String name,float salary){ super(id,name);//reusing parent constructor this.salary=salary; } void display(){System.out.println(id+' '+name+' '+salary);} } class TestSuper5{ public static void main(String[] args){ Emp e1=new Emp(1,'ankit',45000f); e1.display(); }} 
Przetestuj teraz

Wyjście:

 1 ankit 45000