Java abstrakt klasse og metode (med eksempel)

I denne vejledning lærer vi om Java-abstrakte klasser og metoder ved hjælp af eksempler. Vi lærer også om abstraktion i Java.

Java abstrakt klasse

Den abstrakte klasse i Java kan ikke instantieres (vi kan ikke oprette objekter med abstrakte klasser). Vi bruger abstractnøgleordet til at erklære en abstrakt klasse. For eksempel,

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

En abstrakt klasse kan have både de regelmæssige metoder og abstrakte metoder. For eksempel,

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

For at vide om de ikke-abstrakte metoder skal du besøge Java-metoder. Her vil vi lære om abstrakte metoder.

Java abstrakt metode

En metode, der ikke har sin krop, er kendt som en abstrakt metode. Vi bruger det samme abstractnøgleord til at skabe abstrakte metoder. For eksempel,

 abstract void display();

Her display()er en abstrakt metode. Kroppen af display()erstattes af ;.

Hvis en klasse indeholder en abstrakt metode, skal klassen erklæres abstrakt. Ellers genererer det en fejl. For eksempel,

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

Eksempel: Java abstrakt klasse og metode

Selvom abstrakte klasser ikke kan instantieres, kan vi oprette underklasser ud fra det. Vi kan derefter få adgang til medlemmer af den abstrakte klasse ved hjælp af objektet i underklassen. For eksempel,

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

Produktion

 Dette er Java-programmering

I ovenstående eksempel har vi oprettet en abstrakt klasse med navnet Sprog. Klassen indeholder en regelmæssig metode display().

Vi har oprettet hovedklassen, der arver den abstrakte klasse. Bemærk erklæringen,

 obj.display();

Her er obj genstanden for børneklassen Main. Vi kalder metoden for den abstrakte klasse ved hjælp af objektet obj.

Implementering af abstrakte metoder

Hvis den abstrakte klasse inkluderer en hvilken som helst abstrakt metode, skal alle de barneklasser, der arves fra den abstrakte superklasse, give implementeringen af ​​den abstrakte metode. For eksempel,

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

Produktion

 Barkbark Jeg kan spise.

I eksemplet ovenfor har vi oprettet en abstrakt klasse Animal. Klassen indeholder en abstrakt metode makeSound()og en ikke-abstrakt metode eat().

Vi har arvet en underklasse hund fra superklassen Animal. Her giver underklassen Hund implementeringen af ​​den abstrakte metode makeSound().

Vi brugte derefter objektet d1 fra hundeklassen til at kalde metoder makeSound()og eat().

Bemærk : Hvis hundeklassen ikke leverer implementeringen af ​​den abstrakte metode makeSound(), skal hunden også erklæres som abstrakt. Dette skyldes, at underklassen Hund arver makeSound()fra Animal.

Adgang til konstruktør af abstrakte klasser

En abstrakt klasse kan have konstruktører som den almindelige klasse. Og vi kan få adgang til konstruktøren af ​​en abstrakt klasse fra underklassen ved hjælp af supernøgleordet. For eksempel,

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

Her har vi brugt super()indersiden af ​​konstruktøren af ​​Dog til at få adgang til dyrets konstruktør.

Bemærk, at det superaltid skal være den første erklæring fra underklassekonstruktøren. Besøg Java super nøgleord for at lære mere.

Java-abstraktion

Den største anvendelse af abstrakte klasser og metoder er at opnå abstraktion i Java.

Abstraktion er et vigtigt begreb med objektorienteret programmering, der giver os mulighed for at skjule unødvendige detaljer og kun vise de nødvendige oplysninger.

Dette giver os mulighed for at styre kompleksiteten ved at udelade eller skjule detaljer med en enklere idé på højere niveau.

Et praktisk eksempel på abstraktion kan være motorcykelbremser. Vi ved, hvad bremse gør. Når vi trækker bremsen, stopper motorcyklen. Imidlertid holdes bremsens arbejde skjult for os.

Den største fordel ved at skjule bremsens arbejde er, at producenten nu kan implementere bremsen forskelligt for forskellige motorcykler, men hvad bremsen gør, vil være den samme.

Lad os tage et eksempel, der hjælper os med bedre at forstå Java-abstraktion.

Eksempel 3: Java-abstraktion

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

Output :

 Bark bark 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).
  • En klasse, der indeholder abstrakte metoder, skal også være abstrakt.
  • Vi kan ikke skabe objekter fra en abstrakt klasse.
  • For at implementere funktioner i en abstrakt klasse arver vi underklasser fra den og opretter objekter i underklassen.
  • En underklasse skal tilsidesætte alle abstrakte metoder i en abstrakt klasse. Men hvis underklassen erklæres abstrakt, er det ikke obligatorisk at tilsidesætte abstrakte metoder.
  • Vi kan få adgang til de statiske attributter og metoder i en abstrakt klasse ved hjælp af referencen til den abstrakte klasse. For eksempel,
     Animal.staticMethod();

Interessante artikler...