logo

Јава апстрактна кључна реч

Кључна реч апстрактна се користи за постизање апстракције у Јави. То је модификатор без приступа који се користи за креирање апстрактне класе и методе.

Улога апстрактне класе је да садржи апстрактне методе. Међутим, може садржати и неапстрактне методе. Метода која је декларисана са апстрактном кључном речи и која нема никакву имплементацију позната је као апстрактна метода.

Синтакса:-

 abstract class Employee { abstract void work(); } 

Напомена - Не можемо декларисати апстрактне методе у неапстрактној класи.

Правила апстрактне кључне речи

Не

  • Апстрактна кључна реч се не може користити са променљивим и конструкторима.
  • Ако је класа апстрактна, не може се инстанцирати.
  • Ако је метода апстрактна, она не садржи тело.
  • Не можемо користити апстрактну кључну реч са коначни .
  • Апстрактне методе не можемо прогласити као приватни .
  • Апстрактне методе не можемо прогласити као статичне .
  • Апстрактни метод се не може синхронизовати.

До'с

  • Апстрактна кључна реч се може користити само са класом и методом.
  • Апстрактна класа може да садржи конструкторе и статичке методе.
  • Ако класа проширује апстрактну класу, она такође мора имплементирати барем један од апстрактних метода.
  • Апстрактна класа може да садржи главни метод и завршни метод.
  • Апстрактна класа може да садржи преоптерећене апстрактне методе.
  • Локалну унутрашњу класу можемо прогласити апстрактном.
  • Апстрактни метод можемо декларисати клаузулом бацања.

Примери апстрактне кључне речи

Пример 1: Апстрактна класа која садржи апстрактни метод

 abstract class Vehicle { abstract void bike(); } class Honda extends Vehicle { @Override void bike() { System.out.println('Bike is running'); } } public class AbstractExample1 { public static void main(String[] args) { Honda obj=new Honda(); obj.bike(); } } 
Тестирајте одмах

Излаз:

 Bike is running 

Пример 2: Апстрактна класа која садржи апстрактни и неапстрактни метод

 abstract class Vehicle { abstract void bike(); void car() { System.out.println('Car is running'); } } class Honda extends Vehicle { @Override void bike() { System.out.println('Bike is running'); } } public class AbstractExample2 { public static void main(String[] args) { Honda obj=new Honda(); obj.bike(); obj.car(); } } 
Тестирајте одмах

Излаз:

 Bike is running Car is running 

Пример 3: Апстрактна класа која садржи конструктор

 abstract class Vehicle { String msg; Vehicle(String msg) { this.msg=msg; } void display() { System.out.println(msg); } } class Honda extends Vehicle { Honda(String msg) { super(msg); } } public class AbstractExample3 { public static void main(String[] args) { Honda obj=new Honda('Constructor is invoked'); obj.display(); } } 
Тестирајте одмах

Излаз:

 Constructor is invoked 

Пример 4: Апстрактна класа која садржи преоптерећене апстрактне методе

 abstract class Vehicle { abstract void display(); abstract void display(String msg); } class Honda extends Vehicle { @Override void display() { System.out.println('abstract method is invoked'); } @Override void display(String msg) { System.out.println(msg); } } public class AbstractExample4 { public static void main(String[] args) { Honda obj=new Honda(); obj.display(); obj.display('overloaded abstract method is invoked'); } } 
Тестирајте одмах

Излаз:

 abstract method is invoked overloaded abstract method is invoked 

Пример 5: Унутрашња апстрактна класа

 class Vehicle { abstract class Car { abstract void display(); } class Honda extends Car { @Override void display() { System.out.println('inner abstract class is invoked'); } } } public class AbstractExample5 { public static void main(String[] args) { Vehicle obj=new Vehicle(); Vehicle.Car c=obj.new Honda(); c.display(); } } 
Тестирајте одмах

Излаз:

 inner abstract class is invoked 

Пример 6: Угнежђена апстрактна класа

 abstract class Vehicle { abstract class Car { abstract void display(); } } class Honda extends Vehicle { class FourWheller extends Car { @Override void display() { System.out.println('nested abstract class is invoked'); } } } public class AbstractExample6 { public static void main(String[] args) { Vehicle obj=new Honda(); Honda h=(Honda)obj; Honda.FourWheller fw=h.new FourWheller(); fw.display(); } } 
Тестирајте одмах

Излаз:

 nested abstract class is invoked