web-dev-qa-db-fra.com

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

Dupliquer possible:
Classe abstraite en Java

J'ai eu plusieurs explications mais jusqu'à présent, je ne suis pas capable de comprendre ce que sont les classes et 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 quelque chose 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 cela comme si vous enseigniez à un débutant. J'apprécierais vraiment votre aide.

40
Umer Hassan

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

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

L'objectif principal d'une classe abstraite est si vous avez un code commun à utiliser dans les sous-classes mais que la classe abstraite ne doit pas avoir d'instances propres.

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

73
Aviram Segal

- Abstract class est un/ ne peut pas être instancié , c’est-à-dire sa object ne peut pas être créé.

- Abstract method sont la déclaration de la méthode sans sa définition .

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

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

- Si la Class a un Abstract method, la classe doit également être Abstract.

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

- Abstract class dans Design patterns sont utilisés pour encapsuler les comportements qui changent constamment.

75
Kumar Vivek Mitra

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 être déclarée abstract également. 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 aucune 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 pour faire cela. L'une serait d'écrire une méthode qui serait la même pour toutes les formes mais qui dépend d'un comportement spécifique à la forme inconnu au niveau 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 que vous pouvez implémenter partiellement une interface. Toutes les méthodes déclarées dans une interface sont héritées en tant que méthodes abstraites par toute classe qui implémente l'interface. Parfois, vous souhaitez fournir une implémentation partielle d'une interface dans une classe et laisser les détails aux sous-classes; l'implémentation partielle doit être déclarée abstraite.

16
Ted Hopp

méthode abstraite n'ai 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 abstraite .

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

3
Abhishekkumar

Une classe abstraite est une classe pour laquelle vous ne pouvez pas créer d'objet, elle est donc principalement utilisée pour hériter de.

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

1
Alex555

Avec les classes abstraites, vous pouvez avoir une sorte de squelette que d'autres classes peuvent étendre.

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

0
Atropo

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

0
PeterMmm