Java-abstrakti luokka ja menetelmä (esimerkin kanssa)

Tässä opetusohjelmassa opitaan Java-abstrakteista luokista ja menetelmistä esimerkkien avulla. Opimme myös Java-abstraktiosta.

Java abstrakti luokka

Javan abstraktia luokkaa ei voida instantisoida (emme voi luoda abstraktien luokkien objekteja). Käytämme abstractavainsanaa abstraktin luokan julistamiseen. Esimerkiksi,

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

Abstraktilla luokalla voi olla sekä säännöllisiä että abstrakteja menetelmiä. Esimerkiksi,

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

Jos haluat tietää ei-abstrakteista menetelmistä, käy Java-menetelmissä. Täällä opitaan abstrakteista menetelmistä.

Java-abstrakti menetelmä

Menetelmää, jolla ei ole runkoa, kutsutaan abstraktiksi menetelmäksi. Käytämme samaa abstractavainsanaa abstraktien menetelmien luomiseen. Esimerkiksi,

 abstract void display();

Tässä display()on abstrakti menetelmä. Runko display()korvataan ;.

Jos luokka sisältää abstraktin menetelmän, luokka tulisi julistaa abstraktiksi. Muuten se aiheuttaa virheen. Esimerkiksi,

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

Esimerkki: Java-abstrakti luokka ja menetelmä

Vaikka abstrakteja luokkia ei voida instantisoida, voimme luoda niistä alaluokkia. Sitten voimme käyttää abstraktin luokan jäseniä käyttämällä alaluokan objektia. Esimerkiksi,

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

Tuotos

 Tämä on Java-ohjelmointi

Yllä olevassa esimerkissä olemme luoneet abstraktin luokan nimeltä Kieli. Luokka sisältää tavallisen menetelmän display().

Olemme luoneet pääluokan, joka perii abstraktin luokan. Huomaa lausunto,

 obj.display();

Tässä obj on lapsiluokan pääobjekti. Kutsumme abstraktin luokan menetelmää objektilla obj.

Tiivistettyjen menetelmien toteuttaminen

Jos abstrakti luokka sisältää jonkin abstraktin menetelmän, kaikkien abstraktin yläluokan perimien alaluokkien on tarjottava abstraktin menetelmän toteutus. Esimerkiksi,

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

Tuotos

 Kuoren kuori voin syödä.

Yllä olevassa esimerkissä olemme luoneet abstraktin luokan Eläimet. Luokka sisältää abstraktin menetelmän makeSound()ja ei-abstraktin menetelmän eat().

Olemme perineet alaluokan koiran yläluokan eläimestä. Tässä alakategorian koira tarjoaa toteutuksen abstraktille menetelmälle makeSound().

Sitten käytimme Koira-luokan objektia d1 kutsumalla menetelmiä makeSound()ja eat().

Huomaa : Jos Koiraluokka ei tarjoa abstraktin menetelmän toteutusta makeSound(), Koira tulisi myös julistaa abstraktiksi. Tämä johtuu siitä, että alaluokka Koira perii eläimeltä makeSound().

Käyttää tiivistelmäluokkien rakentajaa

Abstraktilla luokassa voi olla rakentajia, kuten tavallisessa luokassa. Ja voimme käyttää abstraktin luokan rakentajaa alaluokasta superavainsanalla. Esimerkiksi,

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

Tässä olemme käyttäneet super()Koiran rakentajaa pääsemään eläimen rakentajaan.

Huomaa, että sen supertulisi aina olla alaluokkarakentajan ensimmäinen käsky. Käy Java super -avainsanalla saadaksesi lisätietoja.

Java-abstraktio

Abstraktien luokkien ja menetelmien pääasiallinen käyttö on abstraktin saavuttaminen Java-muodossa.

Abstraktio on tärkeä olio-ohjelmoinnin käsite, jonka avulla voimme piilottaa tarpeettomat yksityiskohdat ja näyttää vain tarvittavat tiedot.

Tämän avulla voimme hallita monimutkaisuutta jättämällä yksityiskohdat pois tai piilottamalla ne yksinkertaisemmalla, korkeamman tason ajatuksella.

Käytännöllinen esimerkki vedenotosta voivat olla moottoripyörän jarrut. Tiedämme, mitä jarru tekee. Kun jarrua käytetään, moottoripyörä pysähtyy. Jarrun toiminta on kuitenkin piilotettu meiltä.

Jarrun toiminnan piilottamisen suurin etu on, että valmistaja voi nyt käyttää jarrua eri tavoin eri moottoripyörille, mutta mikä jarrut ovat samat.

Otetaan esimerkki, joka auttaa meitä ymmärtämään paremmin Java-abstraktiota.

Esimerkki 3: Java-abstraktio

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

Tuotos :

 Kuoren kuori Meows

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).
  • Abstrakteja menetelmiä sisältävän luokan tulisi myös olla abstrakti.
  • Emme voi luoda abstraktin luokan esineitä.
  • Abstraktin luokan ominaisuuksien toteuttamiseksi perimme siitä alaluokat ja luomme alaluokan objektit.
  • Alaluokan on korvattava kaikki abstraktin luokan abstraktit menetelmät. Kuitenkin, jos alaluokka julistetaan abstraktiksi, abstraktien menetelmien ohittaminen ei ole pakollista.
  • Voimme käyttää abstraktin luokan staattisia määritteitä ja menetelmiä käyttämällä abstraktin luokan viitteitä. Esimerkiksi,
     Animal.staticMethod();

Mielenkiintoisia artikkeleita...