Java abstrakt klasse og metode (med eksempel)

I denne veiledningen vil vi lære om Java abstrakte klasser og metoder ved hjelp av eksempler. Vi vil også lære om abstraksjon i Java.

Java abstrakt klasse

Abstraktklassen i Java kan ikke instantieres (vi kan ikke lage objekter med abstrakte klasser). Vi bruker abstractnøkkelordet for å 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 ha både vanlige 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 å vite om ikke-abstrakte metoder, besøk Java-metoder. Her vil vi lære om abstrakte metoder.

Java abstrakt metode

En metode som ikke har kroppen er kjent som en abstrakt metode. Vi bruker det samme abstractnøkkelordet for å lage abstrakte metoder. For eksempel,

 abstract void display();

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

Hvis en klasse inneholder en abstrakt metode, bør klassen erklæres abstrakt. Ellers vil det generere en feil. For eksempel,

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

Eksempel: Java abstrakt klasse og metode

Selv om abstrakte klasser ikke kan instantiseres, kan vi lage underklasser fra det. Vi kan da få tilgang til medlemmer av den abstrakte klassen ved å bruke objektet til 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(); ) )

Produksjon

 Dette er Java-programmering

I eksemplet ovenfor har vi opprettet en abstrakt klasse med navnet Språk. Klassen inneholder en vanlig metode display().

Vi har laget hovedklassen som arver den abstrakte klassen. Legg merke til uttalelsen,

 obj.display();

Her er obj objektet til barneklassen Main. Vi kaller metoden til den abstrakte klassen ved hjelp av objektet obj.

Implementering av abstrakte metoder

Hvis den abstrakte klassen inkluderer en hvilken som helst abstrakt metode, må alle barneklasser som arves fra den abstrakte superklassen, gi implementeringen av den abstrakte metoden. 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(); ) )

Produksjon

 Barkbark kan jeg spise.

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

Vi har arvet en underklasse Dog fra superklassen Animal. Her gir underklassen Dog implementeringen av den abstrakte metoden makeSound().

Vi brukte deretter objektet d1 i Dog-klassen til å kalle metoder makeSound()og eat().

Merk : Hvis hundeklassen ikke gir implementering av den abstrakte metoden makeSound(), bør hunden også erklæres som abstrakt. Dette er fordi underklassen Hund arver makeSound()fra Animal.

Få tilgang til konstruktør av abstrakte klasser

En abstrakt klasse kan ha konstruktører som den vanlige klassen. Og vi kan få tilgang til konstruktøren til en abstrakt klasse fra underklassen ved hjelp av supernøkkelordet. For eksempel,

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

Her har vi brukt super()innsiden av hundens konstruktør for å få tilgang til dyrets konstruktør.

Merk at det superalltid skal være den første uttalelsen til underklassekonstruktøren. Besøk Java super søkeord for å lære mer.

Java Abstraksjon

Den viktigste bruken av abstrakte klasser og metoder er å oppnå abstraksjon i Java.

Abstraksjon er et viktig begrep med objektorientert programmering som lar oss skjule unødvendige detaljer og bare vise den nødvendige informasjonen.

Dette lar oss håndtere kompleksitet ved å utelate eller skjule detaljer med en enklere ide på høyere nivå.

Et praktisk eksempel på abstraksjon kan være motorsykkelbremser. Vi vet hva brems gjør. Når vi setter på bremsen, stopper motorsykkelen. Imidlertid holdes bremsen skjult for oss.

Den største fordelen med å skjule arbeidet til bremsen er at produsenten nå kan implementere brems på forskjellige måter for forskjellige motorsykler, men hva bremsen gjør vil være den samme.

La oss ta et eksempel som hjelper oss til bedre å forstå Java-abstraksjon.

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

Utgang :

 Barkbark 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 som inneholder abstrakte metoder, bør også være abstrakt.
  • Vi kan ikke lage objekter fra en abstrakt klasse.
  • For å implementere funksjoner i en abstrakt klasse arver vi underklasser fra den og lager objekter av underklassen.
  • En underklasse må overstyre alle abstrakte metoder i en abstrakt klasse. Imidlertid, hvis underklassen er erklært abstrakt, er det ikke obligatorisk å overstyre abstrakte metoder.
  • Vi kan få tilgang til de statiske attributtene og metodene til en abstrakt klasse ved hjelp av referansen til den abstrakte klassen. For eksempel,
     Animal.staticMethod();

Interessante artikler...