logo

Апстрактни метод у Јави

У објектно оријентисаном програмирању, апстракција се дефинише као скривање непотребних детаља (имплементација) од корисника и фокусирање на битне детаље (функционалност). Повећава ефикасност и тиме смањује сложеност.

У Јави, апстракција се може постићи коришћењем апстрактне класе и методе. У овом водичу ћемо научити о апстрактним методама и њиховој употреби у Јави.

Апстрактна класа

Класа се проглашава апстрактном помоћу апстрактан кључна реч. Може имати нула или више апстрактних и неапстрактних метода. Морамо да проширимо апстрактну класу и применимо њене методе. Не може се инстанцирати.

Синтакса за апстрактну класу:

 abstract class class_name { //abstract or non-abstract methods } 

Напомена: Апстрактна класа може или не мора да садржи апстрактне методе.

Абстрацт Метход

Метода декларисана коришћењем апстрактан кључна реч унутар апстрактне класе и нема дефиницију (имплементацију) назива се апстрактна метода.

Када нам је потребна само декларација метода у супер класи, то се може постићи декларисањем метода као апстрактних.

Апстрактни метод се такође назива одговорност подкласе јер нема имплементацију у супер класи. Према томе, поткласа мора да је надјача да би обезбедила дефиницију методе.

Синтакса за апстрактни метод:

 abstract return_type method_name( [ argument-list ] ); 

Овде, апстрактна метода нема тело методе. Може имати нула или више аргумената.

Тачке које треба запамтити

Следеће тачке су важна правила за апстрактну методу у Јави:

  • Апстрактни методи немају тело (имплементацију), они само имају потпис (декларацију) методе. Класа која проширује апстрактну класу имплементира апстрактне методе.
  • Ако неапстрактна (конкретна) класа проширује апстрактну класу, онда класа мора имплементирати све апстрактне методе те апстрактне класе. Ако није, конкретна класа се такође мора декларисати као апстрактна.
  • Пошто апстрактне методе имају само потпис, на крају треба да има тачку и зарез (;).
  • Следе разне недозвољене комбинације других модификатора за методе у погледу апстрактан модификатор:
    • коначни
    • апстрактно нативе
    • апстрактно синхронизовано
    • апстрактна статичност
    • апстрактно приватно
    • апстрактно стрицтфп
  • Ако класа садржи апстрактну методу, она мора бити апстрактна и обрнуто није тачно.

Пример апстрактног метода у Јави

Пример 1:

У следећем примеру ћемо научити како се апстракција постиже коришћењем апстрактних класа и апстрактних метода.

АбстрацтМетходЕк1.јава

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

Излаз:

Апстрактни метод у Јави

Пример 2:

Подразумевано, све методе интерфејса су јавне и апстрактне. Интерфејс не може да садржи конкретне методе, тј. регуларне методе са телом.

АбстрацтМетходЕк2.јава

 // 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)); } } 

Излаз:

Апстрактни метод у Јави

На овај начин смо научили о апстрактној методи и њеној имплементацији у Јави.