Třída a metoda Java (s příkladem)

V tomto výukovém programu se na příkladech seznámíme s abstraktními třídami a metodami Java. Dozvíme se také o abstrakci v Javě.

Java abstraktní třída

Abstraktní třídu v Javě nelze vytvořit instanci (nemůžeme vytvářet objekty abstraktních tříd). abstractKlíčové slovo používáme k deklaraci abstraktní třídy. Napří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í třída může mít jak běžné metody, tak abstraktní metody. Například,

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

Chcete-li vědět o jiných než abstraktních metodách, navštivte metody Java. Zde se dozvíme o abstraktních metodách.

Java abstraktní metoda

Metoda, která nemá své tělo, se nazývá abstraktní metoda. Stejné abstractklíčové slovo používáme k vytváření abstraktních metod. Například,

 abstract void display();

Zde display()je abstraktní metoda. Tělo display()je nahrazeno ;.

Pokud třída obsahuje abstraktní metodu, měla by být třída deklarována jako abstraktní. Jinak vygeneruje chybu. Například,

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

Příklad: Java Abstract Class and Method

Ačkoli abstraktní třídy nelze vytvořit, můžeme z nich vytvořit podtřídy. Poté můžeme přistupovat k členům abstraktní třídy pomocí objektu podtřídy. Napří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ýstup

 Toto je programování v Javě

Ve výše uvedeném příkladu jsme vytvořili abstraktní třídu s názvem Language. Třída obsahuje běžnou metodu display().

Vytvořili jsme hlavní třídu, která dědí abstraktní třídu. Všimněte si prohlášení,

 obj.display();

Zde je obj objekt podřízené třídy Main. Voláme metodu abstraktní třídy pomocí objektu obj.

Implementace abstraktních metod

Pokud abstraktní třída zahrnuje jakoukoli abstraktní metodu, pak všechny podřízené třídy zděděné z abstraktní nadtřídy musí poskytovat implementaci abstraktní metody. Napří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ýstup

 Kůra kůra mohu jíst.

Ve výše uvedeném příkladu jsme vytvořili abstraktní třídu Animal. Třída obsahuje abstraktní metodu makeSound()a jinou než abstraktní metodu eat().

Zdědili jsme podtřídu Pes od nadtřídy Zvíře. Zde podtřída Dog poskytuje implementaci pro abstraktní metodu makeSound().

Poté jsme použili objekt d1 třídy Dog k volání metod makeSound()a eat().

Poznámka : Pokud třída Dog neposkytuje implementaci abstraktní metody makeSound(), Dog by měl být také deklarován jako abstraktní. Je to proto, že podtřída Pes dědí makeSound()ze Zvíře.

Zpřístupňuje konstruktor abstraktních tříd

Abstraktní třída může mít konstruktory jako běžná třída. K konstruktoru abstraktní třídy můžeme přistupovat z podtřídy pomocí superklíčového slova. Například,

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

Zde jsme použili super()uvnitř konstruktoru Dog pro přístup ke konstruktoru Animal.

Všimněte si, že superby měl být vždy první příkaz konstruktoru podtřídy. Navštivte super klíčové slovo Java a dozvíte se více.

Java Abstrakce

Hlavním využitím abstraktních tříd a metod je dosažení abstrakce v Javě.

Abstrakce je důležitý koncept objektově orientovaného programování, který nám umožňuje skrýt zbytečné podrobnosti a zobrazit pouze potřebné informace.

To nám umožňuje spravovat složitost vynecháním nebo skrytím detailů s jednodušší myšlenkou na vyšší úrovni.

Praktickým příkladem abstrakce mohou být motocyklové brzdy. Víme, co dělá brzda. Když zabrzdíme, motorka se zastaví. Činnost brzdy je však před námi skryta.

Hlavní výhodou skrytí fungování brzdy je, že nyní může výrobce implementovat brzdu odlišně pro různé motocykly, nicméně to, co dělá brzda, bude stejné.

Vezměme si příklad, který nám pomůže lépe porozumět Java abstrakci.

Pří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 štěká Mňouká

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).
  • Třída obsahující abstraktní metody by měla být také abstraktní.
  • Nemůžeme vytvářet objekty abstraktní třídy.
  • Abychom implementovali funkce abstraktní třídy, zdědíme z ní podtřídy a vytváříme objekty podtřídy.
  • Podtřída musí přepsat všechny abstraktní metody abstraktní třídy. Pokud je však podtřída deklarována jako abstraktní, není nutné přepsat abstraktní metody.
  • Ke statickým atributům a metodám abstraktní třídy můžeme přistupovat pomocí odkazu na abstraktní třídu. Například,
     Animal.staticMethod();

Zajímavé články...