I objektorienteret programmering er abstraktion defineret som at skjule de unødvendige detaljer (implementering) for brugeren og at fokusere på væsentlige detaljer (funktionalitet). Det øger effektiviteten og reducerer dermed kompleksiteten.
json-format eksempel
I Java kan abstraktion opnås vha abstrakte klasser og metoder. I denne tutorial lærer vi om abstrakte metoder og dets brug i Java.
Abstrakt klasse
En klasse erklæres abstrakt ved hjælp af abstrakt søgeord. Det kan have nul eller flere abstrakte og ikke-abstrakte metoder. Vi er nødt til at udvide den abstrakte klasse og implementere dens metoder. Det kan ikke instantieres.
Syntaks for abstrakt klasse:
abstract class class_name { //abstract or non-abstract methods }
Bemærk: En abstrakt klasse kan indeholde abstrakte metoder eller ikke.
Abstrakt metode
En metode erklæret ved hjælp af abstrakt nøgleord inden for en abstrakt klasse og ikke har en definition (implementering) kaldes en abstrakt metode.
Når vi kun har brug for metodedeklarationen i en superklasse, kan det opnås ved at erklære metoderne som abstracts.
Abstrakt metode kaldes også underklasseansvar, da den ikke har implementeringen i superklassen. Derfor skal en underklasse tilsidesætte den for at give metodedefinitionen.
Syntaks for abstrakt metode:
abstract return_type method_name( [ argument-list ] );
Her har den abstrakte metode ikke et metodelegeme. Det kan have nul eller flere argumenter.
Punkter at huske
Følgende punkter er de vigtige regler for abstrakt metode i Java:
- En abstrakt metode har ikke en krop (implementering), de har bare en metodesignatur (erklæring). Klassen, der udvider den abstrakte klasse, implementerer de abstrakte metoder.
- Hvis en ikke-abstrakt (konkret) klasse udvider en abstrakt klasse, så skal klassen implementere alle abstrakte metoder i den abstrakte klasse. Hvis ikke, skal den konkrete klasse også erklæres som abstrakt.
- Da de abstrakte metoder kun har signaturen, skal den have semikolon (;) i slutningen.
- Følgende er forskellige ulovlige kombinationer af andre modifikatorer for metoder vedr abstrakt modifikator:
- endelig
- abstrakt indfødt
- abstrakt synkroniseret
- abstrakt statisk
- abstrakt privat
- abstrakt strengfp
- Hvis en klasse indeholder abstrakt metode, skal den være abstrakt og omvendt er det ikke sandt.
Eksempel på abstrakt metode i Java
Eksempel 1:
I det følgende eksempel vil vi lære, hvordan abstraktion opnås ved hjælp af abstrakte klasser og abstrakte metoder.
AbstractMethodEx1.java
// 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(); } }
Produktion:
Eksempel 2:
Som standard er alle metoderne i en grænseflade offentlige og abstrakte. En grænseflade kan ikke indeholde konkrete metoder, dvs. almindelige metoder med krop.
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)); } }
Produktion:
På denne måde har vi lært om abstrakt metode og dens implementering i Java.