logo

Super słowo kluczowe w Javie

The super słowo kluczowe w Javie jest zmienną referencyjną używaną do odwoływania się do klasy nadrzędnej, gdy pracujemy z obiektami. Trzeba znać podstawy Dziedzictwo I Wielopostaciowość aby zrozumieć słowo kluczowe Java super.

Słowo kluczowe Super pojawił się wraz z koncepcją Dziedziczenia. W tym artykule omówimy wszystko na temat super w Javie, w tym definicje, przykłady, zastosowania, składnię i nie tylko.

Spis treści



Charakterystyka Super słowa kluczowego w Javie

W Javie słowo super służy do odwoływania się do klasy nadrzędnej podklasy. Oto niektóre z jego kluczowych cech:

  • super służy do wywoływania konstruktora nadklasy: Kiedy tworzona jest podklasa, jej konstruktor musi wywołać konstruktor swojej klasy nadrzędnej. Odbywa się to za pomocą słowa kluczowego super(), które wywołuje konstruktor klasy nadrzędnej.
  • super służy do wywołania metody nadklasy: Podklasa może wywołać metodę zdefiniowaną w swojej klasie nadrzędnej za pomocą słowa kluczowego super. Jest to przydatne, gdy podklasa chce wywołać implementację metody klasy nadrzędnej oprócz własnej.
  • super służy do uzyskiwania dostępu do pola nadklasy: Podklasa może uzyskać dostęp do pola zdefiniowanego w swojej klasie nadrzędnej za pomocą słowa kluczowego super. Jest to przydatne, gdy podklasa chce odwoływać się do wersji pola klasy nadrzędnej.
  • super musi być pierwszą instrukcją w konstruktorze: Podczas wywoływania konstruktora nadklasy instrukcja super() musi być pierwszą instrukcją w konstruktorze podklasy.
  • super nie można używać w kontekście statycznym: Super słowa kluczowego nie można używać w kontekście statycznym, takim jak metoda statyczna lub inicjator zmiennej statycznej.
  • super nie jest wymagane do wywoływania metody nadklasy: Chociaż możliwe jest użycie słowa kluczowego super do wywołania metody w klasie nadrzędnej, nie jest to wymagane. Jeśli metoda nie zostanie nadpisana w podklasie, wywołanie jej bez słowa kluczowego super wywoła implementację klasy nadrzędnej.

Ogólnie rzecz biorąc, super słowo kluczowe to potężne narzędzie do tworzenia podklas w Javie, umożliwiające podklasom dziedziczenie i rozwijanie funkcjonalności swoich klas nadrzędnych.

Użycie słowa kluczowego super w Javie

Jest używany głównie w następujących kontekstach, jak wspomniano poniżej:

  • Użycie super ze zmiennymi
  • Użycie super z metodami
  • Użycie super w konstruktorach

1. Użycie super ze zmiennymi

Ten scenariusz ma miejsce, gdy klasa pochodna i klasa bazowa mają te same elementy danych. W takim przypadku istnieje możliwość wystąpienia niejednoznaczności JVM .

Możemy to lepiej zrozumieć na następującym przykładzie:

Przykład

Jawa




// super keyword in java example> > // Base class vehicle> class> Vehicle {> >int> maxSpeed =>120>;> }> > // sub class Car extending vehicle> class> Car>extends> Vehicle {> >int> maxSpeed =>180>;> > >void> display()> >{> >// print maxSpeed of base class (vehicle)> >System.out.println(>'Maximum Speed: '> >+>super>.maxSpeed);> >}> }> > // Driver Program> class> Test {> >public> static> void> main(String[] args)> >{> >Car small =>new> Car();> >small.display();> >}> }>

>

>

Wyjście

Maximum Speed: 120>

W powyższym przykładzie zarówno klasa bazowa, jak i podklasa mają element maxSpeed. Możemy uzyskać dostęp do maxSpeed ​​klasy bazowej w podklasie za pomocą słowa kluczowego super.

2. Użycie super z metodami

Używamy tego, gdy chcemy wywołać klasę nadrzędną metoda . Jeśli więc klasa nadrzędna i podrzędna mają metody o tej samej nazwie, wówczas w celu rozwiązania niejednoznaczności używamy słowa kluczowego super.

Ten fragment kodu pomaga zrozumieć wspomniane użycie słowa kluczowego super.

Przykład

Jawa




// super keyword in java example> > // superclass Person> class> Person {> >void> message()> >{> >System.out.println(>'This is person class '>);> >}> }> // Subclass Student> class> Student>extends> Person {> >void> message()> >{> >System.out.println(>'This is student class'>);> >}> >// Note that display() is> >// only in Student class> >void> display()> >{> >// will invoke or call current> >// class message() method> >message();> > >// will invoke or call parent> >// class message() method> >super>.message();> >}> }> // Driver Program> class> Test {> >public> static> void> main(String args[])> >{> >Student s =>new> Student();> > >// calling display() of Student> >s.display();> >}> }>

>

>

Wyjście

This is student class This is person class>

W powyższym przykładzie widzieliśmy, że jeśli wywołamy tylko metodę wiadomość() następnie wywoływana jest bieżąca klasa Message(), ale z użyciem słowa kluczowego super, wiadomość() nadklasy można również wywołać.

3. Użycie super w konstruktorach

Aby uzyskać dostęp do konstruktora klasy nadrzędnej, można również użyć słowa kluczowego super. Jeszcze jedną ważną rzeczą jest to, że „super” może wywoływać zarówno konstruktory parametryczne, jak i nieparametryczne, w zależności od sytuacji.

Poniżej znajduje się fragment kodu wyjaśniający powyższą koncepcję:

Przykład 1

Jawa


jakie są wymiary ekranu mojego komputera



// Java Code to show use of> // super keyword with constructor> > // superclass Person> class> Person {> >Person()> >{> >System.out.println(>'Person class Constructor'>);> >}> }> > // subclass Student extending the Person class> class> Student>extends> Person {> >Student()> >{> >// invoke or call parent class constructor> >super>();> > >System.out.println(>'Student class Constructor'>);> >}> }> > // Driver Program> class> Test {> >public> static> void> main(String[] args)> >{> >Student s =>new> Student();> >}> }>

>

>

Wyjście

Person class Constructor Student class Constructor>

W powyższym przykładzie wywołaliśmy konstruktor nadklasy za pomocą słowa kluczowego „super” za pośrednictwem konstruktora podklasy.

Przykład 2

Jawa




class> ParentClass {> >public> boolean> isTrue() {>return> true>; }> }> > class> ChildClass>extends> ParentClass {> >public> boolean> isTrue()> >{> >// calls parent implementation of isTrue()> >boolean> parentResult =>super>.isTrue();> >// negates the parent result> >return> !parentResult;> >}> }> > public> class> Main {> >public> static> void> main(String[] args)> >{> >ChildClass child =>new> ChildClass();> >// calls child implementation> >// of isTrue()> >boolean> result = child.isTrue();> > >// prints 'false'> >System.out.println(result);> >}> }>

>

>

Wyjście

false>

Zalety używania słowa kluczowego Java Super

The super słowo kluczowe w Javie zapewnia wiele korzyści w programowaniu obiektowym, są następujące:

  • Umożliwia ponowne użycie kodu : Użycie słowa kluczowego super umożliwia podklasom dziedziczenie funkcjonalności z klas nadrzędnych, co sprzyja ponownemu użyciu kodu i ogranicza powielanie.
  • Obsługuje polimorfizm : Ponieważ podklasy mogą przesłaniać metody i uzyskiwać dostęp do pól z klas nadrzędnych za pomocą super, możliwy jest polimorfizm. Pozwala to na bardziej elastyczny i rozszerzalny kod.
  • Zapewnia dostęp do zachowania klasy nadrzędnej : Podklasy mogą uzyskiwać dostęp do metod i pól zdefiniowanych w swoich klasach nadrzędnych oraz korzystać z nich za pomocą słowa kluczowego super, które pozwala im wykorzystać istniejące zachowanie bez konieczności jego ponownej implementacji.
  • Pozwala na personalizację zachowania: Zastępując metody i używając super do wywołania implementacji nadrzędnej, podklasy mogą dostosowywać i rozszerzać zachowanie swoich klas nadrzędnych.
  • Ułatwia abstrakcję i enkapsulację: Użycie super promuje hermetyzację i abstrakcję, umożliwiając podklasom skupienie się na swoim zachowaniu, jednocześnie polegając na klasie nadrzędnej w obsłudze szczegółów niższego poziomu.

Ogólnie rzecz biorąc, słowo kluczowe super jest kluczową cechą dziedzictwo I wielopostaciowość w Javie i zapewnia szereg korzyści programistom chcącym pisać kod wielokrotnego użytku, rozszerzalny i dobrze zorganizowany.

Ważne punkty, o których należy pamiętać podczas używania słowa kluczowego Java Super

Oto kilka ważnych punktów, o których należy pamiętać podczas używania super słów kluczowych w Javie:

  • Wywołanie super() musi być pierwszą instrukcją w klasie Derived(Student). konstruktor ponieważ jeśli się nad tym zastanowić, ma to sens, że nadklasa nie ma wiedzy o żadnej podklasie, więc każda inicjalizacja, którą musi wykonać, jest oddzielna i prawdopodobnie jest warunkiem wstępnym jakiejkolwiek inicjalizacji wykonywanej przez podklasę. Dlatego najpierw musi dokończyć wykonanie.
  • Jeśli konstruktor nie wywołuje jawnie konstruktora nadklasy, kompilator Java automatycznie wstawia wywołanie konstruktora nadklasy bez argumentów. Jeśli nadklasa nie ma konstruktora bez argumentów, pojawi się błąd w czasie kompilacji. Obiekt robi mieć takiego konstruktora, więc jeśli Object jest jedyną nadklasą, nie ma problemu.

super słowo kluczowe w Javie

  • Jeśli konstruktor podklasy wywołuje konstruktor swojej nadklasy, jawnie lub pośrednio, można pomyśleć, że wywoływany jest cały łańcuch konstruktorów, aż do konstruktora Object. W rzeczywistości tak jest. Nazywa się to łączenie konstruktorów .

Często zadawane pytania – super słowo kluczowe Java

Pytanie 1. Co to jest słowo kluczowe super () i super w Javie?

Super() to słowo kluczowe Java używane do wywoływania konstruktora nadklasy. Super uzyskuje dostęp do członków nadklasy i utrzymuje hierarchie dziedziczenia.

Pytanie 2. Która jest superklasą Java?

The Klasa obiektowa, czyli superklasa znajduje się na szczycie hierarchii klasowej Pakiet Java.lang . Każda klasa, predefiniowana lub zdefiniowana przez użytkownika, jest podklasą klasy Object.

Pytanie 3. Dlaczego Super jest ważny w Javie?

super jest niezbędny w Javie, ponieważ ułatwia dostęp, inicjalizację i zarządzanie relacjami pomiędzy nadklasami i podklasami, promując w ten sposób możliwość ponownego użycia kodu.