logo

Abstraktné kľúčové slovo Java

Kľúčové slovo abstrakt sa používa na dosiahnutie abstrakcie v jazyku Java. Je to modifikátor bez prístupu, ktorý sa používa na vytvorenie abstraktnej triedy a metódy.

Úlohou abstraktnej triedy je obsahovať abstraktné metódy. Môže však obsahovať aj neabstraktné metódy. Metóda, ktorá je deklarovaná s abstraktným kľúčovým slovom a nemá žiadnu implementáciu, je známa ako abstraktná metóda.

Syntax:-

 abstract class Employee { abstract void work(); } 

Poznámka - Nemôžeme deklarovať abstraktné metódy v neabstraktnej triede.

Pravidlá abstraktného kľúčového slova

nie

  • Abstraktné kľúčové slovo nemožno použiť s premennými a konštruktormi.
  • Ak je trieda abstraktná, nemôže byť vytvorená.
  • Ak je metóda abstraktná, neobsahuje telo.
  • Nemôžeme použiť abstraktné kľúčové slovo s Konečný .
  • Abstraktné metódy nemôžeme vyhlásiť za súkromné .
  • Abstraktné metódy nemôžeme vyhlásiť za statické .
  • Abstraktnú metódu nie je možné synchronizovať.

Urobte to

  • Abstraktné kľúčové slovo možno použiť len s triedou a metódou.
  • Abstraktná trieda môže obsahovať konštruktory a statické metódy.
  • Ak trieda rozširuje abstraktnú triedu, musí tiež implementovať aspoň jednu z abstraktných metód.
  • Abstraktná trieda môže obsahovať hlavnú metódu a konečnú metódu.
  • Abstraktná trieda môže obsahovať preťažené abstraktné metódy.
  • Lokálnu vnútornú triedu môžeme deklarovať ako abstraktnú.
  • Abstraktnú metódu môžeme deklarovať klauzulou throw.

Príklady abstraktného kľúčového slova

Príklad 1: Abstraktná trieda obsahujúca abstraktnú metódu

 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(); } } 
Vyskúšajte to

Výkon:

 Bike is running 

Príklad 2: Abstraktná trieda obsahujúca abstraktnú a neabstraktnú metódu

 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(); } } 
Vyskúšajte to

Výkon:

git príkazy pre push
 Bike is running Car is running 

Príklad 3: Abstraktná trieda obsahujúca konštruktor

 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(); } } 
Vyskúšajte to

Výkon:

 Constructor is invoked 

Príklad 4: Abstraktná trieda obsahujúca preťažené abstraktné metódy

 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'); } } 
Vyskúšajte to

Výkon:

 abstract method is invoked overloaded abstract method is invoked 

Príklad 5: Vnútorná abstraktná trieda

 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(); } } 
Vyskúšajte to

Výkon:

 inner abstract class is invoked 

Príklad 6: Vnorená abstraktná trieda

 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(); } } 
Vyskúšajte to

Výkon:

 nested abstract class is invoked