logo

Java abstraktna ključna beseda

Ključna beseda abstract se uporablja za doseganje abstrakcije v Javi. Je modifikator brez dostopa, ki se uporablja za ustvarjanje abstraktnega razreda in metode.

Vloga abstraktnega razreda je, da vsebuje abstraktne metode. Lahko pa vsebuje tudi neabstraktne metode. Metoda, ki je deklarirana z abstraktno ključno besedo in nima implementacije, je znana kot abstraktna metoda.

Sintaksa: -

 abstract class Employee { abstract void work(); } 

Opomba – abstraktnih metod ne moremo deklarirati v neabstraktnem razredu.

Pravila abstraktne ključne besede

Ne

  • Abstraktne ključne besede ni mogoče uporabiti s spremenljivkami in konstruktorji.
  • Če je razred abstrakten, ga ni mogoče instancirati.
  • Če je metoda abstraktna, ne vsebuje telesa.
  • Ne moremo uporabiti abstraktne ključne besede z dokončno .
  • Abstraktnih metod ne moremo razglasiti kot zasebno .
  • Abstraktnih metod ne moremo razglasiti kot statična .
  • Abstraktne metode ni mogoče sinhronizirati.

Naredi

  • Abstraktno ključno besedo je mogoče uporabiti samo z razredom in metodo.
  • Abstraktni razred lahko vsebuje konstruktorje in statične metode.
  • Če razred razširi abstraktni razred, mora implementirati tudi vsaj eno od abstraktnih metod.
  • Abstraktni razred lahko vsebuje glavno metodo in končno metodo.
  • Abstraktni razred lahko vsebuje preobremenjene abstraktne metode.
  • Lokalni notranji razred lahko razglasimo za abstrakten.
  • Abstraktno metodo lahko deklariramo s klavzulo vrženja.

Primeri abstraktnih ključnih besed

Primer 1: Abstraktni razred, ki vsebuje abstraktno metodo

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

Izhod:

 Bike is running 

Primer 2: Abstraktni razred, ki vsebuje abstraktno in neabstraktno metodo

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

Izhod:

 Bike is running Car is running 

Primer 3: Abstraktni razred, ki vsebuje konstruktor

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

Izhod:

 Constructor is invoked 

Primer 4: Abstraktni razred, ki vsebuje preobremenjene abstraktne metode

 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'); } } 
Preizkusite zdaj

Izhod:

 abstract method is invoked overloaded abstract method is invoked 

Primer 5: Notranji abstraktni razred

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

Izhod:

 inner abstract class is invoked 

Primer 6: Ugnezdeni abstraktni razred

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

Izhod:

 nested abstract class is invoked