Java abstracte klasse en methode (met voorbeeld)

In deze tutorial leren we met behulp van voorbeelden over Java-abstracte klassen en -methoden. We zullen ook leren over abstractie in Java.

Java abstracte klasse

De abstracte klasse in Java kan niet worden geïnstantieerd (we kunnen geen objecten van abstracte klassen maken). We gebruiken het abstractsleutelwoord om een ​​abstracte klasse aan te geven. Bijvoorbeeld,

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

Een abstracte klasse kan zowel de reguliere methoden als abstracte methoden hebben. Bijvoorbeeld,

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

Ga naar Java-methoden voor meer informatie over niet-abstracte methoden. Hier leren we over abstracte methoden.

Java abstracte methode

Een methode die geen body heeft, staat bekend als een abstracte methode. We gebruiken hetzelfde abstracttrefwoord om abstracte methoden te maken. Bijvoorbeeld,

 abstract void display();

Hier display()is een abstracte methode. De body van display()is vervangen door ;.

Als een klasse een abstracte methode bevat, moet de klasse als abstract worden gedeclareerd. Anders genereert het een fout. Bijvoorbeeld,

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

Voorbeeld: Java abstracte klasse en methode

Hoewel abstracte klassen niet kunnen worden geïnstantieerd, kunnen we er wel subklassen van maken. We hebben dan toegang tot leden van de abstracte klasse met behulp van het object van de subklasse. Bijvoorbeeld,

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

Uitvoer

 Dit is programmeren in Java

In het bovenstaande voorbeeld hebben we een abstracte klasse gemaakt met de naam Language. De klasse bevat een reguliere methode display().

We hebben de Main-klasse gemaakt die de abstracte klasse erft. Let op de verklaring,

 obj.display();

Hier is obj het object van de kindklasse Main. We noemen de methode van de abstracte klasse met behulp van het object obj.

Implementeren van abstracte methoden

Als de abstracte klasse een abstracte methode bevat, moeten alle onderliggende klassen die zijn geërfd van de abstracte superklasse, de implementatie van de abstracte methode bieden. Bijvoorbeeld,

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

Uitvoer

 Schors schors ik kan eten.

In het bovenstaande voorbeeld hebben we een abstracte klasse Animal gemaakt. De klasse bevat een abstracte methode makeSound()en een niet-abstracte methode eat().

We hebben een subklasse Hond geërfd uit de superklasse Animal. Hier zorgt de subklasse Dog voor de implementatie van de abstracte methode makeSound().

Vervolgens hebben we het object d1 van de klasse Dog gebruikt om methoden makeSound()en aan te roepen eat().

Opmerking : als de klasse Dog de implementatie van de abstracte methode niet biedt makeSound(), moet Dog ook als abstract worden gedeclareerd. Dit komt doordat de subklasse Dog erft makeSound()van Animal.

Heeft toegang tot constructor van abstracte klassen

Een abstracte klasse kan constructors hebben zoals de gewone klasse. En we hebben toegang tot de constructor van een abstracte klasse vanuit de subklasse met behulp van het supertrefwoord. Bijvoorbeeld,

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

Hier hebben we de super()binnenkant van de constructor van Dog gebruikt om toegang te krijgen tot de constructor van de Animal.

Merk op dat de superaltijd de eerste instructie van de subklasse-constructor moet zijn. Bezoek Java-superzoekwoord voor meer informatie.

Java-abstractie

Het belangrijkste gebruik van abstracte klassen en methoden is om abstractie in Java te bereiken.

Abstractie is een belangrijk concept van objectgeoriënteerd programmeren waarmee we onnodige details kunnen verbergen en alleen de benodigde informatie kunnen tonen.

Dit stelt ons in staat om met complexiteit om te gaan door details weg te laten of te verbergen met een eenvoudiger idee op een hoger niveau.

Een praktisch voorbeeld van abstractie kunnen motorremmen zijn. We weten wat rem doet. Als we op de rem trappen, stopt de motor. De werking van de rem wordt echter voor ons verborgen gehouden.

Het grote voordeel van het verbergen van de werking van de rem is dat de fabrikant nu de rem voor verschillende motoren verschillend kan implementeren, maar wat rem doet, zal hetzelfde zijn.

Laten we een voorbeeld nemen dat ons helpt om de abstractie van Java beter te begrijpen.

Voorbeeld 3: Java-abstractie

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

Uitgang :

 Schors blaffen Miauwen

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).
  • Een klasse die abstracte methoden bevat, moet ook abstract zijn.
  • We kunnen geen objecten van een abstracte klasse maken.
  • Om kenmerken van een abstracte klasse te implementeren, erven we er subklassen van en maken we objecten van de subklasse.
  • Een subklasse moet alle abstracte methoden van een abstracte klasse overschrijven. Als de subklasse echter abstract wordt verklaard, is het niet verplicht om abstracte methoden te overschrijven.
  • We hebben toegang tot de statische attributen en methoden van een abstracte klasse met behulp van de referentie van de abstracte klasse. Bijvoorbeeld,
     Animal.staticMethod();

Interessante artikelen...