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
- Użycie słowa kluczowego super w Javie
- 1. Użycie super ze zmiennymi
- 2. Użycie super z metodami
- 3. Użycie super w konstruktorach
- Zalety używania słowa kluczowego Java Super
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.

- 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.