Que sont les classes abstraites et les méthodes abstraites?

Duplication possible:
Classe abstraite en Java

J’ai eu plusieurs explications mais jusqu’à présent je ne peux pas comprendre ce que sont les classes et les méthodes abstraites en Java.

Certains ont dit qu’il fallait faire quelque chose avec la sécurité du programme, d’autres ont dit que ce n’était pas comme ça.

Même dans le livre de Dietel & Dietel, je ne comprends pas son but. Quand, où et pourquoi l’utilisons-nous?

Veuillez expliquer que vous enseignez à un débutant, j’apprécierais vraiment votre aide.

Une classe abstraite est une classe qui ne peut pas être instanciée. Son seul but est que les autres classes s’étendent.

Les méthodes abstraites sont des méthodes de la classe abstraite (doivent être déclarées abstraites), ce qui signifie que la classe concrète en extension doit les remplacer car elles n’ont pas de corps.

Le but principal d’une classe abstraite est de savoir si vous avez un code commun à utiliser dans les sous-classes, mais la classe abstraite ne doit pas avoir d’instances propres.

Vous pouvez en savoir plus à ce sujet ici: Méthodes et classes abstraites

– La Abstract class est une Abstract class qui ne peut pas être instanciée , c’est-à-dire que son object ne peut pas être créé.

– La Abstract method est la déclaration de la méthode sans sa définition .

Une Non-abstract class ne peut avoir que des méthodes non abstraites.

Une Abstract class peut avoir à la fois les méthodes non abstraite et abstraite.

– Si la Class a une Abstract method la classe doit également être Abstract.

Une Abstract method doit être implémentée par la toute première sous-classe non-abstraite.

– La Abstract class dans les Design patterns est utilisée pour encapsuler les comportements qui changent constamment.

Une méthode abstraite est une déclaration de signature de méthode sans corps. Par exemple:

 public abstract class Shape { . . . public abstract double getArea(); public abstract double getPerimeter(); } 

Les méthodes getArea() et getPerimeter() sont abstraites. Comme la classe Shape a une méthode abstraite, elle doit également être déclarée abstract . Une classe peut également être déclarée abstract sans aucune méthode abstraite. Lorsqu’une classe est abstraite, une instance de celle-ci ne peut pas être créée; on ne peut créer que des instances de sous-classes (concrètes). Une classe concrète est une classe qui n’est pas déclarée abstraite (et n’a donc pas de méthode abstraite et implémente toutes les méthodes abstraites héritées). Par exemple:

 public class Circle extends Shape { public double radius; . . . public double getArea() { return Math.PI * radius * radius; } public double getPerimeter() { return 2.0 * Math.PI * radius; } } 

Il y a plusieurs raisons à cela. On pourrait écrire une méthode qui serait la même pour toutes les formes, mais cela dépend du comportement spécifique à la Shape qui est inconnu au niveau de la Shape . Par exemple, on pourrait écrire la méthode:

 public abstract class Shape { . . . public void printArea(PrintStream out) { out.println("The area is " + getArea()); } } 

Certes, il s’agit d’un exemple artificiel, mais il montre l’idée de base: définir un comportement concret en termes de comportement non spécifié.

Une autre raison d’avoir une classe abstraite est de pouvoir implémenter partiellement une interface. Toutes les méthodes déclarées dans une interface sont héritées comme méthodes abstraites par toute classe implémentant l’interface. Parfois, vous voulez fournir une implémentation partielle d’une interface dans une classe et laisser les détails aux sous-classes; la mise en œuvre partielle doit être déclarée abstraite.

méthode abstraite n’a pas de corps.Une méthode bien définie ne peut pas être déclarée abstraite.

Une classe qui a une méthode abstraite doit être déclarée comme abstraite .

La classe abstraite ne peut pas être instanciée.

Une classe abstraite est une classe à partir de laquelle vous ne pouvez pas créer d’object, elle est donc principalement utilisée pour en hériter (je ne suis pas sûr que vous puissiez y inclure des méthodes statiques).

Une méthode abstraite est une méthode que la classe enfant doit remplacer, elle n’a pas de corps, est marquée comme abstraite et seules les classes abstraites peuvent avoir ces méthodes.

Avec les classes abstraites, vous pouvez avoir une sorte de squelette pour étendre d’autres classes.

Vous ne pouvez pas les instancier, mais vous pouvez mettre en place une implémentation commune que vous pouvez utiliser dans les classes qui les étendent.

Une fois que vous obtenez ce que l’abstraction signifie en Java, vous demandez: pourquoi ils ont mis ça? Java peut fonctionner sans éléments abstraits, MAIS cela fait partie d’un certain style ou vocabulaire OO. Il existe vraiment des situations où une classe ou une méthode abstraite est une manière élégante d’exprimer l’intention des auteurs du programme. La plupart lorsque vous programmez un cadre ou une bibliothèque qui sera utilisé par d’autres.

RÉSUMÉ DES CLASSES ET DES MÉTHODES D’ABSTARCT DESCRIPTION COMPLETE

méthode abstraite n’a pas de corps.Une méthode bien définie ne peut pas être déclarée abstraite.

Une classe qui a une méthode abstraite doit être déclarée comme abstraite.

La classe abstraite ne peut pas être instanciée.