In der objektorientierten Programmierung wird Abstraktion als das Verbergen unnötiger Details (Implementierung) vor dem Benutzer und die Konzentration auf wesentliche Details (Funktionalität) definiert. Es erhöht die Effizienz und reduziert somit die Komplexität.
In Java kann Abstraktion erreicht werden mit abstrakte Klassen und Methoden. In diesem Tutorial lernen wir abstrakte Methoden und deren Verwendung in Java kennen.
Abstrakte Klasse
Eine Klasse wird mit dem als abstrakt deklariert abstrakt Stichwort. Es kann null oder mehr abstrakte und nicht abstrakte Methoden haben. Wir müssen die abstrakte Klasse erweitern und ihre Methoden implementieren. Es kann nicht instanziiert werden.
Syntax für abstrakte Klasse:
abstract class class_name { //abstract or non-abstract methods }
Hinweis: Eine abstrakte Klasse kann abstrakte Methoden enthalten oder auch nicht.
Abstrakte Methode
Eine mit deklarierte Methode abstrakt Schlüsselwort innerhalb einer abstrakten Klasse und ohne Definition (Implementierung) wird als abstrakte Methode bezeichnet.
Wenn wir in einer Superklasse nur die Methodendeklaration benötigen, können wir dies erreichen, indem wir die Methoden als Abstracts deklarieren.
Die abstrakte Methode wird auch Unterklassenverantwortung genannt, da sie nicht in der Superklasse implementiert ist. Daher muss eine Unterklasse sie überschreiben, um die Methodendefinition bereitzustellen.
String in int konvertieren
Syntax für abstrakte Methode:
abstract return_type method_name( [ argument-list ] );
Hier hat die abstrakte Methode keinen Methodenkörper. Es kann null oder mehr Argumente haben.
Punkte, die man sich merken sollte
Die folgenden Punkte sind die wichtigen Regeln für abstrakte Methoden in Java:
- Eine abstrakte Methode hat keinen Körper (Implementierung), sondern nur eine Methodensignatur (Deklaration). Die Klasse, die die abstrakte Klasse erweitert, implementiert die abstrakten Methoden.
- Wenn eine nicht abstrakte (konkrete) Klasse eine abstrakte Klasse erweitert, muss die Klasse alle abstrakten Methoden dieser abstrakten Klasse implementieren. Wenn nicht, muss die konkrete Klasse ebenfalls als abstrakt deklariert werden.
- Da die abstrakten Methoden nur die Signatur haben, muss am Ende ein Semikolon (;) stehen.
- Im Folgenden sind verschiedene aufgeführt illegale Kombinationen anderer Modifikatoren für Methoden in Bezug auf abstrakt Modifikator:
- Finale
- abstrakter Eingeborener
- abstrakt synchronisiert
- abstrakte Statik
- abstrakt privat
- abstraktes strictfp
- Wenn eine Klasse eine abstrakte Methode enthält, muss sie abstrakt sein und umgekehrt ist dies nicht der Fall.
Beispiel einer abstrakten Methode in Java
Beispiel 1:
Im folgenden Beispiel erfahren wir, wie Abstraktion mithilfe abstrakter Klassen und abstrakter Methoden erreicht wird.
AbstractMethodEx1.java
jsp
// abstract class abstract class Multiply { // abstract methods // sub class must implement these methods public abstract int MultiplyTwo (int n1, int n2); public abstract int MultiplyThree (int n1, int n2, int n3); // regular method with body public void show() { System.out.println ('Method of abstract class Multiply'); } } // Regular class extends abstract class class AbstractMethodEx1 extends Multiply { // if the abstract methods are not implemented, compiler will give an error public int MultiplyTwo (int num1, int num2) { return num1 * num2; } public int MultiplyThree (int num1, int num2, int num3) { return num1 * num2 * num3; } // main method public static void main (String args[]) { Multiply obj = new AbstractMethodEx1(); System.out.println ('Multiplication of 2 numbers: ' + obj.MultiplyTwo (10, 50)); System.out.println ('Multiplication of 3 numbers: ' + obj.MultiplyThree (5, 8, 10)); obj.show(); } }
Ausgabe:
Beispiel 2:
Standardmäßig sind alle Methoden einer Schnittstelle öffentlich und abstrakt. Eine Schnittstelle kann keine konkreten Methoden enthalten, d. h. reguläre Methoden mit Body.
AbstractMethodEx2.java
// interface interface SquareCube { // abstract methods public abstract int squareNum (int n); // it not necessary to add public and abstract keywords // as the methods in interface are public abstract by default int cubeNum (int n); // regular methods are not allowed in an interface // if we uncomment this method, compiler will give an error /*public void disp() { System.out.println ('I will give error if u uncomment me'); } */ } public class AbstractMethodEx2 implements SquareCube { // defining the abstract methods of interface public int squareNum (int num) { return num * num; } public int cubeNum (int num) { return num * num * num; } // main method public static void main(String args[]){ SquareCube obj = new AbstractMethodEx2(); System.out.println('Square of number is: ' + obj.squareNum (7) ); System.out.println('Cube of number is: ' + obj.cubeNum (7)); } }
Ausgabe:
Auf diese Weise haben wir etwas über abstrakte Methoden und ihre Implementierung in Java gelernt.