Po článku Autoboxing a Unboxing v Javě se dozvíme, jaký je rozdíl mezi Extends a Implements v Javě. Obě jsou v Javě vyhrazená klíčová slova, která používáme k dědění vlastností již existujícího rodičovského bloku v nově vytvářeném bloku podřízeném. Používají se k implementaci různých konceptů v jazyce Java. Na příkladech se dozvíme, co je to klíčové slovo extends v Javě a co je to klíčové slovo implements v Javě.
Nejprve si s Techvidvanem podrobně zrevidujeme pojem Autoboxing a Unboxing v Javě.
Udržujte si přehled o nejnovějších technologických trendech, Přidejte se k TechVidvanu na Telegramu
Co je to extends v Javě?
- Klíčové slovo extends v jazyce Java je užitečné, když chceme zdědit vlastnosti a metody rodičovské třídy v naší podřízené třídě.
- Klíčové slovo extends vytváří vztah dědičnosti mezi dvěma třídami.
- Používáme ho při vytváření odvozené třídy z rodičovské třídy nebo při vytváření podtřídy z nadtřídy.
- Pravidlem je, že třída může rozšiřovat maximálně jednu třídu.
- Když třída rozšiřuje jinou třídu, může přepisovat metody definované v nadtřídě.
- Klíčové slovo extends používáme také tehdy, když chceme, aby rozhraní rozšiřovalo nebo dědilo jiné rozhraní.
Seznamte se podrobně s konceptem dědičnosti v Javě pomocí Techvidvanu.
Kód pro pochopení klíčového slova extends v Javě:
package com.techvidvan.extendsvsimplements;//Parent classclass Country{ String name = "India"; public void display() { System.out.println("This is my country India"); }}//child class extends the parent classclass City extends Country{ // defining additional properties to the derived class String state = "Rajasthan"; String city = "Jaipur";}public class ExtendsDemo{ public static void main(String args) { City obj=new City(); obj.display(); System.out.println("Name of the city is: " + obj.name); System.out.println("City is present in " + obj.state + "state"); }}
Výstup:
Jméno města je: Jaipur
Město se nachází ve státě Rádžasthán
Co je to implementace v Javě?
- Při implementaci rozhraní používáme klíčové slovo implements.
- Třída může implementovat rozhraní pomocí klíčového slova implements.
- Rozhraní je abstraktní typ v Javě, který obsahuje kolekci abstraktních metod. Rozhraní nemůžeme instancovat, to znamená, že nemůžeme vytvářet objekty z rozhraní.
- Když třída implementuje rozhraní, musí definovat všechny metody, které se v rozhraní vyskytují, tím, že poskytne implementaci každé z metod.
- Pokud třída, která implementuje rozhraní, nedefinuje nebo neobsahuje implementaci všech metod rozhraní, pak ji musíme deklarovat jako abstraktní. Jinak kompilátor vyhodí chybu.
- Java nepodporuje vícenásobnou dědičnost, ale můžeme v našem kódu implementovat vícenásobnou dědičnost pomocí více rozhraní v Javě.
- Rozhraní nemůže nikdy implementovat jiné rozhraní. Důvodem je, že pokud rozhraní bude implementovat jiné rozhraní, pak musí definovat všechny metody rozhraní, které implementuje, ale rozhraní nemůže mít žádné konkrétní metody, proto rozhraní nemůže v Javě implementovat jiné rozhraní.
Podrobně si rozšiřte své znalosti o rozhraní v Javě pomocí Techvidvanu.
Kód pro pochopení implementace klíčového slova java implements:
package com.techvidvan.extendsvsimplements;//Creating an interfaceinterface MyInterface{ //Declaring abstract methods inside it void displayString(String s); void showNumber(int i);}//Implementing the interface using the implements keywordpublic class MyClass implements MyInterface{ //Implementing all the methods declared in the interface public void displayString(String s) { System.out.println("The string value is: " +s); } public void showNumber(int i) { System.out.println("The integer value is: " +i); } public static void main(String args) { MyClass obj = new MyClass(); obj.displayString("TechVidvan"); obj.showNumber(20); }}
Výstup:
Celočíselná hodnota je: 20
Příklad implementace více rozhraní
Nyní si ukážeme příklad, kdy jedna třída implementuje více rozhraní najednou a zakládá tak v Javě více dědičností. Vytvoříme 3 rozhraní:
1. rozhraní: Chodící, Plavající a Mluvící a jednu třídu HumanBeing, která implementuje všechna 3 rozhraní: Walkable.java
package com.techvidvan.extendsvsimplements;public interface Walkable { public void walk();}
2. rozhraní: Swimmable.java
package com.techvidvan.extendsvsimplements;public interface Swimmable{ public void swim();}
3. rozhraní: Třída: Talkable.java
package com.techvidvan.extendsvsimplements;public interface Talkable { public void talk();}
4: HumanBeing.java
package com.techvidvan.extendsvsimplements;\To implement multiple interfaces we must use commas to separate thempublic class HumanBeing implements Walkable, Swimmable, Talkable{ @Override public void walk() { System.out.println("I can walk"); } @Override public void swim() { System.out.println("I can swim"); } @Override public void talk() { System.out.println("I can talk"); } public static void main(String args) { HumanBeing human= new HumanBeing(); human.walk(); human.swim(); human.talk(); }}
Výstup:
Umím plavat
Umím mluvit
Rozdíl mezi Extends a Implements v Javě
Viděli jsme příklady obou klíčových slov, podívejme se nyní podrobně na java extends vs implements:
Srovnání vlastností | Extends | Implements |
Implementace | Klíčové slovo extends se používá, když chce třída zdědit všechny vlastnosti od jiné třídy nebo rozhraní, které chce zdědit rozhraní. | Klíčové slovo implementuje používáme, když chceme, aby třída implementovala rozhraní. |
Souvisí s | Souvisí s dědičností | Souvisí s abstrakcí |
Metody | Dceřiná třída, která rozšiřuje rodičovskou třídu, může, ale nemusí přepsat všechny metody přítomné v rodičovské třídě. | Třída, která implementuje rozhraní, musí definovat nebo poskytnout implementaci všech metod deklarovaných v rozhraní, jinak by měla být deklarována jako abstraktní. |
Třída | Dílčí třída nebo více podtříd může rozšiřovat pouze jednu rodičovskou třídu současně. | Třída nebo více nadřazených tříd může současně implementovat jedno rozhraní. |
Rozhraní | Rozhraní může rozšiřovat libovolný počet rozhraní. | Rozhraní nemůže nikdy implementovat žádné jiné rozhraní. |
Shrnutí
Na závěr se tedy dostáváme k závěru článku o rozdílu mezi extends a implements v Javě. Prošli jsme si hlavní rozdíly mezi těmito klíčovými slovy. Obě přímo či nepřímo využívají koncept dědičnosti v Javě. Můžeme však konstatovat, že implementace rozhraní poskytuje větší flexibilitu než rozšiřování třídy, protože můžeme rozšířit jednu třídu, ale v Javě můžeme implementovat více dědičností. Doufám, že jste po přečtení tohoto článku konečně porozuměli klíčovému slovu extends vs. implements v jazyce Java.