logo

Абстрактен метод в Java

В обектно-ориентираното програмиране абстракцията се дефинира като скриване на ненужните детайли (имплементация) от потребителя и фокусиране върху съществени детайли (функционалност). Повишава ефективността и по този начин намалява сложността.

В Java абстракцията може да се постигне с помощта на абстрактни класове и методи. В този урок ще научим за абстрактните методи и тяхното използване в Java.

Абстрактен клас

Клас се декларира абстрактен с помощта на абстрактно ключова дума. Може да има нула или повече абстрактни и неабстрактни методи. Трябва да разширим абстрактния клас и да внедрим неговите методи. Не може да бъде инстанциран.

Синтаксис за абстрактен клас:

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

Забележка: Абстрактен клас може или не може да съдържа абстрактни методи.

Абстрактен метод

Метод, деклариран с помощта на абстрактно ключова дума в рамките на абстрактен клас и няма дефиниция (имплементация) се нарича абстрактен метод.

Когато се нуждаем само от декларация на метод в супер клас, това може да се постигне чрез деклариране на методите като абстракти.

Абстрактният метод се нарича още отговорност на подклас, тъй като няма имплементация в супер класа. Следователно подкласът трябва да го замени, за да предостави дефиницията на метода.

обработка на изключения в java

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

 abstract return_type method_name( [ argument-list ] ); 

Тук абстрактният метод няма тяло на метода. Може да има нула или повече аргументи.

Точки за запомняне

Следните точки са важните правила за абстрактен метод в Java:

  • Абстрактният метод няма тяло (имплементация), а само сигнатура на метода (декларация). Класът, който разширява абстрактния клас, имплементира абстрактните методи.
  • Ако неабстрактен (конкретен) клас разширява абстрактен клас, тогава класът трябва да имплементира всички абстрактни методи на този абстрактен клас. Ако не, конкретният клас също трябва да бъде деклариран като абстрактен.
  • Тъй като абстрактните методи имат само подпис, той трябва да има точка и запетая (;) в края.
  • Следните са различни незаконни комбинации на други модификатори за методи по отношение на абстрактно модификатор:
    • финал
    • абстрактен роден
    • абстрактно синхронизирано
    • абстрактна статика
    • абстрактно частно
    • абстрактно strictfp
  • Ако даден клас съдържа абстрактен метод, той трябва да бъде абстрактен и обратното не е вярно.

Пример за абстрактен метод в Java

Пример 1:

В следващия пример ще научим как се постига абстракция с помощта на абстрактни класове и абстрактни методи.

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

Изход:

Абстрактен метод в Java

Пример 2:

По подразбиране всички методи на интерфейса са публични и абстрактни. Един интерфейс не може да съдържа конкретни методи, т.е. обикновени методи с тяло.

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

Изход:

Абстрактен метод в Java

По този начин научихме за абстрактния метод и неговата реализация в Java.