web-dev-qa-db-fra.com

Méthodes abstraites Java

Je suis un peu confus avec le mot clé abstract ici. Mon compilateur me dit que je ne suis pas autorisé à avoir un corps pour une méthode abstraite. Cependant, ma mission dit:

La méthode abstraite orderDescription () renvoie une chaîne donnant des détails sur un ordre particulier.

abstract String orderDescription()
{
    return null;
}

Cependant, mon code renvoie une erreur, comme je l'ai mentionné ci-dessus. Ma question est donc que dois-je faire pour ce problème? 

Jusqu'à présent, je viens de supprimer le mot clé abstrait et cela fonctionne bien.

9
user123
abstract String orderDescription()
{
    return null;
}

devrait être 

abstract String orderDescription();

Comme le dit l'erreur, votre déclaration de méthode abstraite ne doit contenir aucun corps. 

La syntaxe ci-dessus commande l'implémentation (quelle que soit la classe qui étend la classe abstraite et fournit l'implémentation) pour renvoyer une chaîne.

Vous ne pouvez pas instancier une classe abstraite, certaines classes doivent donc étendre une classe abstraite et fournir une implémentation pour cette méthode abstraite.

Exemple:

class MyabsClass 
{
  abstract String orderDescription();
}

class MyImplementation extends MyabsClass
{
   public String orderDescription()
    {
    return "This is description";
    }
}



 class MyClient
   {
     public static void main(String[] args)
      {
         MyImplementation imple = new MyImplementation();
         imple.orderDescription();
      }
   } 
22
kosa

Lorsque vous définissez une méthode abstraite, vous indiquez au compilateur que toute sous-classe doit fournir une implémentation (ou se déclarer également abstraite).

Vous implémentez la méthode abstraite dans une sous-classe.

N'oubliez pas que vous ne pouvez pas créer d'instances de classes abstraites elles-mêmes. L'intérêt d'une méthode abstraite est d'indiquer au compilateur que vous souhaitez que les sous-classes fournissent la fonctionnalité.

12
hvgotcodes

Essentiellement, une fonction abstraite ne doit contenir aucun détail, il s'agit d'une fonction fictive pour les fonctions héritées. Comme Nambari l’a déclaré, vous ne devez inclure que la définition.

Ceci est utilisé lorsque vous souhaitez qu'une famille de classes contienne une fonction commune que vous souhaitez définir pour chaque classe enfant.

6
PearsonArtPhoto

Les méthodes abstraites ne doivent généralement pas contenir de code "réel", les méthodes abstraites doivent être remplacées par des classes non abstraites contenant la méthode.

4
user1821961

La méthode abstraite ne doit avoir aucun corps de méthode. Il permet uniquement la déclaration de méthode.

0
user1923551

En outre, en ajoutant à l'exemple de Nambari, ce que vous pouvez faire est

class MyabsClass 
{
  abstract String orderDescription();
}

 class MyClient
   {
     public static void main(String[] args)
      {
         MyabsClass mac = new MyabsClass(){
              public String orderDescription()
              {
                     return "This is description";
              }
         };
         mac.orderDescription();
      }
   }

C'est-à-dire par classe anonyme.

0
MeetM