logo

Paraula clau abstracta de Java

La paraula clau abstracta s'utilitza per aconseguir l'abstracció a Java. És un modificador sense accés que s'utilitza per crear classes i mètodes abstractes.

El paper d'una classe abstracta és contenir mètodes abstractes. Tanmateix, també pot contenir mètodes no abstractes. El mètode que es declara amb una paraula clau abstracta i no té cap implementació es coneix com a mètode abstracte.

Sintaxi: -

 abstract class Employee { abstract void work(); } 

Nota: no podem declarar mètodes abstractes en classes no abstractes.

Regles de la paraula clau abstracta

No ho faci

  • Una paraula clau abstracta no es pot utilitzar amb variables i constructors.
  • Si una classe és abstracta, no es pot instanciar.
  • Si un mètode és abstracte, no conté el cos.
  • No podem utilitzar la paraula clau abstracta amb el final .
  • No podem declarar mètodes abstractes com privat .
  • No podem declarar mètodes abstractes com estàtica .
  • Un mètode abstracte no es pot sincronitzar.

Fes

  • Una paraula clau abstracta només es pot utilitzar amb classe i mètode.
  • Una classe abstracta pot contenir constructors i mètodes estàtics.
  • Si una classe amplia la classe abstracta, també ha d'implementar almenys un dels mètodes abstractes.
  • Una classe abstracta pot contenir el mètode principal i el mètode final.
  • Una classe abstracta pot contenir mètodes abstractes sobrecarregats.
  • Podem declarar la classe interna local com a abstracta.
  • Podem declarar el mètode abstracte amb una clàusula throw.

Exemples de paraules clau abstractes

Exemple 1: classe abstracta que conté el mètode abstracte

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

Sortida:

 Bike is running 

Exemple 2: classe abstracta que conté el mètode abstracte i no abstracte

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

Sortida:

 Bike is running Car is running 

Exemple 3: classe abstracta que conté el constructor

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

Sortida:

 Constructor is invoked 

Exemple 4: classe abstracta que conté mètodes abstractes sobrecarregats

 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'); } } 
Prova-ho ara

Sortida:

 abstract method is invoked overloaded abstract method is invoked 

Exemple 5: classe abstracta interna

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

Sortida:

 inner abstract class is invoked 

Exemple 6: classe abstracta niuada

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

Sortida:

 nested abstract class is invoked