logo

Super klíčové slovo v Javě

The super klíčové slovo v Javě je referenční proměnná, která se používá k odkazování na nadřazenou třídu, když pracujeme s objekty. Musíte znát základy Dědictví a Polymorfismus abyste porozuměli klíčovému slovu Java super.

Klíčové slovo super přišel do obrazu s konceptem dědictví. V tomto článku pokryjeme vše o super v Javě včetně definic, příkladů, použití, syntaxe a dalších.

Obsah



Charakteristika Super Keyword v Javě

V Javě se klíčové slovo super používá k odkazování na nadřazenou třídu podtřídy. Zde jsou některé z jeho klíčových vlastností:

  • super se používá k volání konstruktoru nadtřídy: Když je vytvořena podtřída, její konstruktor musí volat konstruktor své rodičovské třídy. To se provádí pomocí klíčového slova super(), které volá konstruktor nadřazené třídy.
  • super se používá k volání metody nadtřídy: Podtřída může volat metodu definovanou ve své nadřazené třídě pomocí klíčového slova super. To je užitečné, když chce podtřída vyvolat implementaci metody nadřazené třídy kromě své vlastní.
  • super se používá pro přístup k poli superclass: Podtřída může přistupovat k poli definovanému ve své nadřazené třídě pomocí klíčového slova super. To je užitečné, když chce podtřída odkazovat na verzi pole nadřazené třídy.
  • super musí být první příkaz v konstruktoru: Při volání konstruktoru nadtřídy musí být příkaz super() prvním příkazem v konstruktoru podtřídy.
  • super nelze použít ve statickém kontextu: Klíčové slovo super nelze použít ve statickém kontextu, jako například ve statické metodě nebo inicializátoru statické proměnné.
  • super není vyžadováno k volání metody superclass: I když je možné použít klíčové slovo super k volání metody v nadřazené třídě, není to vyžadováno. Pokud metoda není v podtřídě přepsána, pak její volání bez klíčového slova super vyvolá implementaci nadřazené třídy.

Celkově vzato, super klíčové slovo je výkonný nástroj pro podtřídy v Javě, který umožňuje podtřídám dědit a stavět na funkčnosti jejich nadřazených tříd.

Použití super klíčového slova v Javě

Používá se hlavně v následujících kontextech, jak je uvedeno níže:

  • Použití super s proměnnými
  • Použití super s metodami
  • Použití super s konstruktory

1. Použití super s proměnnými

K tomuto scénáři dochází, když odvozená třída a základní třída mají stejné datové členy. V takovém případě existuje možnost nejednoznačnosti JVM .

Jasněji to pochopíme na následujícím příkladu:

Příklad

Jáva




// 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();> >}> }>

>

>

Výstup

Maximum Speed: 120>

Ve výše uvedeném příkladu mají základní třída i podtřída člen maxSpeed. Pomocí klíčového slova super jsme mohli získat přístup k maxSpeed ​​základní třídy v podtřídě.

2. Použití super s metodami

To se používá, když chceme volat rodičovskou třídu metoda . Takže kdykoli mají nadřazená a podřízená třída stejně pojmenované metody, pak k vyřešení nejednoznačnosti použijeme klíčové slovo super.

Tento fragment kódu pomáhá porozumět uvedenému použití super klíčového slova.

Příklad

Jáva




// 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();> >}> }>

>

>

Výstup

This is student class This is person class>

Ve výše uvedeném příkladu jsme viděli, že pokud zavoláme pouze metodu zpráva() pak se vyvolá aktuální zpráva třídy (), ale s použitím klíčového slova super, zpráva() lze také vyvolat nadtřídu.

3. Použití super s konstruktory

Klíčové slovo super lze také použít pro přístup ke konstruktoru nadřazené třídy. Ještě jedna důležitá věc je, že „super“ může volat parametrické i neparametrické konstruktory v závislosti na situaci.

Následuje fragment kódu pro vysvětlení výše uvedeného konceptu:

Příklad 1

Jáva


typ data na stroji



// 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();> >}> }>

>

>

Výstup

Person class Constructor Student class Constructor>

Ve výše uvedeném příkladu jsme zavolali konstruktor nadtřídy pomocí klíčového slova „super“ prostřednictvím konstruktoru podtřídy.

Příklad 2

Jáva




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);> >}> }>

>

>

Výstup

false>

Výhody použití Java Super Keyword

The super klíčové slovo v Javě poskytuje mnoho výhod v objektově orientovaném programování, jsou následující:

  • Umožňuje opětovné použití kódu : Použití klíčového slova super umožňuje podtřídám zdědit funkce od svých nadřazených tříd, což podporuje opětovné použití kódu a snižuje duplicitu.
  • Podporuje polymorfismus : Protože podtřídy mohou přepsat metody a přistupovat k polím ze svých nadřazených tříd pomocí super, je možný polymorfismus. To umožňuje flexibilnější a rozšiřitelný kód.
  • Poskytuje přístup k chování rodičovské třídy : Podtřídy mohou přistupovat k metodám a polím definovaným ve svých nadřazených třídách a používat je pomocí klíčového slova super, což jim umožňuje využít stávající chování, aniž by je museli znovu implementovat.
  • Umožňuje přizpůsobení chování: Přepsáním metod a použitím super k volání rodičovské implementace mohou podtřídy přizpůsobit a rozšířit chování svých nadřazených tříd.
  • Usnadňuje abstrakci a zapouzdření: Použití super podporuje zapouzdření a abstrakci tím, že umožňuje podtřídám soustředit se na své chování a přitom se spoléhat na nadřazenou třídu, která zpracuje detaily nižší úrovně.

Celkově je klíčové slovo super klíčovým prvkem dědictví a polymorfismus v Javě a poskytuje několik výhod pro vývojáře, kteří chtějí psát znovupoužitelný, rozšiřitelný a dobře organizovaný kód.

Důležité body k zapamatování při používání Java Super Keyword

Zde je několik důležitých bodů, na které si musíte dát pozor při používání super klíčových slov v Javě:

  • Volání super() musí být prvním příkazem ve třídě Derived(Student). konstruktér protože když se nad tím zamyslíte, dává smysl, že nadtřída nezná žádnou podtřídu, takže jakákoli inicializace, kterou musí provést, je oddělená od jakékoli inicializace prováděné podtřídou a je možná nezbytným předpokladem pro ni. Proto musí nejprve dokončit jeho provedení.
  • Pokud konstruktor explicitně nevyvolá konstruktor nadtřídy, kompilátor Java automaticky vloží volání konstruktoru nadtřídy bez argumentů. Pokud nadtřída nemá konstruktor bez argumentů, zobrazí se chyba při kompilaci. Objekt dělá mít takový konstruktor, takže pokud je Object jedinou nadtřídou, není problém.

super klíčové slovo v Javě

  • Pokud konstruktor podtřídy vyvolá konstruktor své nadtřídy, ať už explicitně nebo implicitně, můžete si myslet, že je volán celý řetězec konstruktorů, až ke konstruktoru Object. Ve skutečnosti tomu tak je. To se nazývá řetězení konstruktorů .

FAQ – Java super Keyword

Q1. Co je super () a super klíčové slovo v Javě?

super() je klíčové slovo Java používané k volání konstruktoru nadtřídy. Super přistupuje ke členům nadtřídy a udržuje hierarchie dědičnosti.

Q2. Jaká je super třída Java?

The Třída objektů aka super třída je na vrcholu hierarchie tříd v Java je balíček java.lang . Každá třída, ať už předdefinovaná nebo uživatelsky definovaná, je podtřídou třídy Object.

Q3. Proč je Super důležitý v Javě?

super je v Javě zásadní, protože usnadňuje přístup, inicializaci a správu vztahů mezi nadtřídami a podtřídami, čímž podporuje znovupoužitelnost kódu.