Razred in metoda Java Abstract (s primerom)

V tej vadnici bomo s pomočjo primerov spoznali abstraktne razrede in metode Java. Spoznali bomo tudi abstrakcijo v Javi.

Razred Java Povzetek

Abstraktnega razreda v Javi ni mogoče instancirati (ne moremo ustvariti predmetov abstraktnih razredov). Ključno abstractbesedo uporabljamo za razglasitev abstraktnega razreda. Na primer

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

Abstraktni razred ima lahko tako običajne metode kot abstraktne metode. Na primer

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

Če želite izvedeti več o abstraktnih metodah, obiščite metode Java. Tu bomo spoznali abstraktne metode.

Javna abstraktna metoda

Metoda, ki nima svojega telesa, je znana kot abstraktna metoda. Za abstractustvarjanje abstraktnih metod uporabljamo isto ključno besedo. Na primer

 abstract void display();

Tukaj display()je abstraktna metoda. Telo display()se nadomesti z ;.

Če razred vsebuje abstraktno metodo, je treba razred razglasiti za abstraktnega. V nasprotnem primeru bo prišlo do napake. Na primer

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

Primer: Razred in metoda Java Abstract

Čeprav abstraktnih razredov ni mogoče ustvariti, lahko iz njih ustvarimo podrazrede. Nato lahko dostopimo do članov abstraktnega razreda z uporabo predmeta podrazreda. Na primer

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

Izhod

 To je programiranje Java

V zgornjem primeru smo ustvarili abstraktni razred z imenom Jezik. Predavanje vsebuje običajno metodo display().

Ustvarili smo glavni razred, ki podeduje abstraktni razred. Upoštevajte izjavo,

 obj.display();

Tu je obj predmet podrejenega razreda Main. Metodo abstraktnega razreda prikličemo s pomočjo predmeta obj.

Izvajanje abstraktnih metod

Če abstraktni razred vključuje katero koli abstraktno metodo, morajo vsi podrejeni razredi, podedovani od abstraktnega superklase, zagotoviti izvajanje abstraktne metode. Na primer

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

Izhod

 Lubje lubja, ki ga lahko jem.

V zgornjem primeru smo ustvarili abstraktni razred Žival. Predavanje vsebuje abstraktno metodo makeSound()in abstraktno metodo eat().

Podrazred Pes smo podedovali od superrazreda Žival. Tu podrazred Dog vsebuje izvedbo abstraktne metode makeSound().

Nato smo uporabili objekt d1 razreda Dog za klicanje metod makeSound()in eat().

Opomba : Če razred Dog ne zagotavlja izvedbe abstraktne metode makeSound(), bi moral biti Dog razglašen tudi za abstraktnega. To je zato, ker podrazred pes podeduje makeSound()od živali.

Dostopa do konstruktorja abstraktnih razredov

Abstraktni razred ima lahko konstruktorje, kot je običajni razred. Do konstruktorja abstraktnega razreda lahko pridemo iz podrazreda z uporabo superključne besede. Na primer

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

Tukaj smo uporabili super()notranji konstruktor Dog za dostop do konstruktorja živali.

Upoštevajte, da bi supermoral biti vedno prvi stavek konstruktorja podrazreda. Če želite izvedeti več, obiščite ključno besedo Java super.

Java Abstrakcija

Glavna uporaba abstraktnih razredov in metod je doseganje abstrakcije v Javi.

Abstrakcija je pomemben koncept objektno usmerjenega programiranja, ki nam omogoča, da skrijemo nepotrebne podrobnosti in prikažemo samo potrebne informacije.

To nam omogoča upravljanje zapletenosti, tako da izpustimo ali skrijemo podrobnosti s preprostejšo idejo na višji ravni.

Praktičen primer abstrakcije so lahko motorne zavore. Vemo, kaj naredi zavora. Ko pritisnemo zavoro, se bo motor ustavil. Vendar pa je delovanje zavore skrito pred nami.

Glavna prednost prikrivanja delovanja zavore je v tem, da lahko proizvajalec zdaj pri različnih motorjih zavore uporablja drugače, vendar bo zavora enaka.

Vzemimo primer, ki nam pomaga bolje razumeti abstrakcijo Java.

Primer 3: Apstrakcija Java

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

Izhod :

 Lubje lubja 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).
  • Razred, ki vsebuje abstraktne metode, mora biti tudi abstrakten.
  • Ne moremo ustvariti predmetov abstraktnega razreda.
  • Za izvajanje funkcij abstraktnega razreda podedujemo podrazrede in ustvarimo predmete podrazreda.
  • Podrazred mora preglasiti vse abstraktne metode abstraktnega razreda. Če pa je podrazred razglašen za abstraktnega, ni treba preglasiti abstraktnih metod.
  • Do statičnih atributov in metod abstraktnega razreda lahko dostopamo s sklicem na abstraktni razred. Na primer
     Animal.staticMethod();

Zanimive Članki...