Objektorientētā programmēšanā abstrakcija tiek definēta kā nevajadzīgu detaļu (ieviešanas) slēpšana no lietotāja un koncentrēšanās uz būtiskām detaļām (funkcionalitāte). Tas palielina efektivitāti un tādējādi samazina sarežģītību.
Java valodā abstrakciju var panākt, izmantojot abstraktās nodarbības un metodes. Šajā apmācībā mēs uzzināsim par abstraktajām metodēm un to izmantošanu Java.
Abstraktā klase
Klase tiek pasludināta par abstraktu, izmantojot abstrakts atslēgvārds. Tam var būt nulle vai vairāk abstraktu un neabstraktu metožu. Mums ir jāpaplašina abstraktā klase un jāievieš tās metodes. To nevar iemiesot.
Abstraktās klases sintakse:
abstract class class_name { //abstract or non-abstract methods }
Piezīme. Abstraktā klase var saturēt abstraktas metodes vai arī tās nebūt.
Abstraktā metode
Metode, kas deklarēta, izmantojot abstrakts atslēgvārds abstraktā klasē un tam nav definīcijas (ieviešanas), tiek saukts par abstraktu metodi.
Ja mums ir nepieciešama tikai metodes deklarācija superklasē, to var panākt, deklarējot metodes kā abstraktas.
Abstrakto metodi sauc arī par apakšklases atbildību, jo tai nav ieviešanas superklasē. Tāpēc apakšklasei tā ir jāiznīcina, lai nodrošinātu metodes definīciju.
Abstraktās metodes sintakse:
abstract return_type method_name( [ argument-list ] );
Šeit abstraktajai metodei nav metodes korpusa. Tam var būt nulle vai vairāk argumentu.
Punkti, kas jāatceras
Tālāk ir norādīti svarīgi abstraktās metodes noteikumi Java:
- Abstraktai metodei nav korpusa (īstenošanas), tām ir tikai metodes paraksts (deklarācija). Klase, kas paplašina abstrakto klasi, īsteno abstraktās metodes.
- Ja neabstrakta (konkrēta) klase paplašina abstrakto klasi, tad klasei ir jārealizē visas šīs abstraktās klases abstraktās metodes. Ja nē, arī konkrētā klase ir jādeklarē kā abstrakta.
- Tā kā abstraktajām metodēm ir tikai paraksts, tā beigās ir jābūt semikolam (;).
- Tālāk ir norādīti dažādi nelikumīgas kombinācijas citus modifikatorus metodēm attiecībā uz abstrakts modifikators:
- galīgais
- abstrakts dzimtā
- abstrakts sinhronizēts
- abstrakta statika
- abstrakts privātais
- abstrakts strictfp
- Ja klasē ir abstrakta metode, tai ir jābūt abstraktai, un otrādi nav taisnība.
Abstraktās metodes piemērs Java valodā
1. piemērs:
Nākamajā piemērā mēs uzzināsim, kā abstrakcija tiek panākta, izmantojot abstraktās klases un abstraktās metodes.
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(); } }
Izvade:
2. piemērs:
Pēc noklusējuma visas saskarnes metodes ir publiskas un abstraktas. Interfeiss nevar saturēt konkrētas metodes, t.i., parastās metodes ar pamattekstu.
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)); } }
Izvade:
Tādā veidā mēs esam uzzinājuši par abstrakto metodi un tās ieviešanu Java.