Trieda a metóda Java (s príkladom)

V tomto výučbe sa pomocou príkladov dozvieme o abstraktných triedach a metódach Java. Dozvieme sa tiež o abstrakcii v Jave.

Java Abstract Class

Abstraktnú triedu v Jave nemožno vytvoriť inštanciou (nemôžeme vytvárať objekty abstraktných tried). abstractKľúčové slovo používame na deklaráciu abstraktnej triedy. Napríklad,

 // create an abstract class abstract class Language ( // fields and methods )… // try to create an object Language // throws an error Language obj = new Language(); 

Abstraktná trieda môže mať bežné aj abstraktné metódy. Napríklad,

 abstract class Language ( // abstract method abstract void method1(); // regular method void method2() ( System.out.println("This is regular method"); ) )

Ak chcete vedieť o iných ako abstraktných metódach, navštívte metódy Java. Tu sa dozvieme o abstraktných metódach.

Java abstraktná metóda

Metóda, ktorá nemá svoje telo, sa nazýva abstraktná metóda. Rovnaké abstractkľúčové slovo používame na vytvorenie abstraktných metód. Napríklad,

 abstract void display();

Tu display()je abstraktná metóda. Telo display()je nahradené ;.

Ak trieda obsahuje abstraktnú metódu, potom by mala byť deklarovaná ako abstraktná. V opačnom prípade to vygeneruje chybu. Napríklad,

 // error // class should be abstract class Language ( // abstract method abstract void method1(); )

Príklad: Java Abstract Class and Method

Aj keď abstraktné triedy nemožno vytvoriť, môžeme z nich vytvoriť podtriedy. Potom môžeme pristupovať k členom abstraktnej triedy pomocou objektu podtriedy. Napríklad,

 abstract class Language ( // method of abstract class public void display() ( System.out.println("This is Java Programming"); ) ) class Main extends Language ( public static void main(String() args) ( // create an object of Main Main obj = new Main(); // access method of abstract class // using object of Main class obj.display(); ) )

Výkon

 Toto je programovanie v jazyku Java

Vo vyššie uvedenom príklade sme vytvorili abstraktnú triedu s názvom Jazyk. Trieda obsahuje bežnú metódu display().

Vytvorili sme triedu Main, ktorá dedí abstraktnú triedu. Všimnite si vyhlásenie,

 obj.display();

Tu je obj objekt podradenej triedy Main. Metódu abstraktnej triedy voláme pomocou objektu obj.

Implementácia abstraktných metód

Ak abstraktná trieda obsahuje ľubovoľnú abstraktnú metódu, potom implementáciu abstraktnej metódy musia poskytovať všetky podradené triedy zdedené z abstraktnej nadtriedy. Napríklad,

 abstract class Animal ( abstract void makeSound(); public void eat() ( System.out.println("I can eat."); ) ) class Dog extends Animal ( // provide implementation of abstract method public void makeSound() ( System.out.println("Bark bark"); ) ) class Main ( public static void main(String() args) ( // create an object of Dog class Dog d1 = new Dog(); d1.makeSound(); d1.eat(); ) )

Výkon

 Kôrovú kôru môžem jesť.

Vo vyššie uvedenom príklade sme vytvorili abstraktnú triedu Zviera. Trieda obsahuje abstraktnú metódu makeSound()a nie abstraktnú metódu eat().

Zdedili sme podtriedu Pes od nadtriedy Zviera. Podtrieda Dog tu poskytuje implementáciu pre abstraktnú metódu makeSound().

Potom sme použili objekt d1 triedy Dog na vyvolanie metód makeSound()a eat().

Poznámka : Ak trieda Dog neposkytuje implementáciu abstraktnej metódy makeSound(), Dog by mal byť tiež vyhlásený za abstraktný. Je to tak preto, lebo podtrieda Pes dedí makeSound()zo Zvieraťa.

Pristupuje ku konštruktoru abstraktných tried

Abstraktná trieda môže mať konštruktory ako bežná trieda. A môžeme získať prístup k konštruktoru abstraktnej triedy z podtriedy pomocou superkľúčového slova. Napríklad,

 abstract class Animal ( Animal() (… . ) ) class Dog extends Animal ( Dog() ( super();… ) )

Tu sme použili super()vnútri konštruktora Doga na prístup ku konštruktorovi zvieraťa.

Upozorňujeme, že superby mal byť vždy prvý príkaz konštruktora podtriedy. Ak sa chcete dozvedieť viac, navštívte kľúčové slovo Java super.

Java Abstrakcia

Hlavným využitím abstraktných tried a metód je dosiahnutie abstrakcie v Jave.

Abstrakcia je dôležitý koncept objektovo orientovaného programovania, ktorý nám umožňuje skryť nepotrebné podrobnosti a zobraziť iba potrebné informácie.

To nám umožňuje zvládnuť zložitosť vynechaním alebo skrytím detailov s jednoduchšou myšlienkou na vyššej úrovni.

Praktickým príkladom abstrakcie môžu byť motocyklové brzdy. Vieme, čo robí brzda. Keď zabrzdíme, motorka sa zastaví. Fungovanie brzdy je však pre nás skryté.

Hlavnou výhodou skrytia činnosti brzdy je, že teraz môže výrobca implementovať brzdu odlišne pre rôzne motocykle, avšak to, čo robí, bude rovnaké.

Zoberme si príklad, ktorý nám pomôže lepšie porozumieť Java abstrakcii.

Príklad 3: Java Abstraction

 abstract class Animal ( abstract void makeSound(); ) class Dog extends Animal ( // implementation of abstract method public void makeSound() ( System.out.println("Bark bark."); ) ) class Cat extends Animal ( // implementation of abstract method public void makeSound() ( System.out.println("Meows "); ) ) class Main ( public static void main(String() args) ( Dog d1 = new Dog(); d1.makeSound(); Cat c1 = new Cat(); c1.makeSound(); ) )

Výstup :

 Kôra kôra Mňauká

In the above example, we have created a superclass Animal. The superclass Animal has an abstract method makeSound().

The makeSound() method cannot be implemented inside Animal. It is because every animal makes different sounds. So, all the subclasses of Animal would have different implementation of makeSound().

So, the implementation of makeSound() in Animal is kept hidden.

Here, Dog makes its own implementation of makeSound() and Cat makes its own implementation of makeSound().

Note: We can also use interfaces to achieve abstraction in Java. To learn more, visit Java Interface.

Key Points to Remember

  • We use the abstract keyword to create abstract classes and methods.
  • An abstract method doesn't have any implementation (method body).
  • Trieda obsahujúca abstraktné metódy by mala byť tiež abstraktná.
  • Nemôžeme vytvárať objekty abstraktnej triedy.
  • Aby sme implementovali vlastnosti abstraktnej triedy, dedíme z nej podtriedy a vytvárame objekty podtriedy.
  • Podtrieda musí prepísať všetky abstraktné metódy abstraktnej triedy. Ak je však podtrieda vyhlásená za abstraktnú, nie je povinné prepísať abstraktné metódy.
  • K statickým atribútom a metódam abstraktnej triedy môžeme pristupovať pomocou odkazu na abstraktnú triedu. Napríklad,
     Animal.staticMethod();

Zaujímavé články...