42 votes

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

Duplicata possible :
Classe abstraite en Java

J'ai reçu 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 que cela avait quelque chose à voir avec la sécurité du programme, d'autres ont dit que ce n'était rien de tel.

Même dans le livre de Dietel & Dietel, je ne comprends pas son utilité. Quand, où et pourquoi l'utiliser ?

Expliquez-le comme si vous enseigniez à un débutant, j'apprécierais vraiment votre aide.

76voto

Aviram Segal Points 6055

Une classe abstraite est une classe qui ne peut pas être instanciée. Son seul but est de permettre aux autres classes de l'étendre.

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 qui s'étend doit les remplacer car elles n'ont pas de corps.

L'objectif principal d'une classe abstraite est d'avoir 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

76voto

Kumar Vivek Mitra Points 19369

- Abstract class est celle qui ne peut pas être instancié c'est-à-dire. son object ne peut pas être créé.

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

- A Non-abstract class peut n'ont que des méthodes non abstraites.

- Un site Abstract class peut ont à la fois des méthodes non abstraites et des méthodes abstraites.

- Si le site Class a un Abstract method alors la classe doit également être abstraite.

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

- Abstract class en Design patterns sont utilisés pour encapsuler les comportements qui ne cessent de changer.

16voto

Ted Hopp Points 122617

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() y getPerimeter() sont abstraits. Parce que le Shape a une méthode abstraite, elle debe être déclaré abstract également. Une classe peut également être déclarée abstract sans aucune méthode abstraite. Lorsqu'une classe est abstraite, on ne peut pas créer d'instance de celle-ci ; 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 qui, par conséquent, ne possède 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 de le faire. L'une d'entre elles serait d'écrire une méthode qui serait la même pour toutes les formes, mais qui dépendrait d'un comportement spécifique à la forme, inconnu à l'origine. Shape niveau. Par exemple, on pourrait écrire la méthode :

public abstract class Shape {
    . . .

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

Il s'agit certes d'un exemple artificiel, mais il illustre 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 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.

3voto

Abhishekkumar Points 367

méthode abstraite Une méthode bien définie ne peut pas être déclarée abstraite.

A classe dont a une méthode abstraite doit être déclaré comme étant abstrait .

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

1voto

Alex555 Points 52

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

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X