Quand on utilise abstract

Résolu
touta_touta Messages postés 337 Date d'inscription   Statut Membre Dernière intervention   -  
touta_touta Messages postés 337 Date d'inscription   Statut Membre Dernière intervention   -
bonjour,
je veux savoir quand on utilise la notion abstract lorsque on veux faire un héritage et a quoi sert?.
Merci pour ceux qui vont m'aidez :)

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
abstract permet de définir une méthode que l'on ne veut ou peut pas implémenter mais qui sera malgré tout disponible pour les objets. Cela permet notamment de faire des implémentations partielles.

abstract désigne aussi les classes qui ont des méthodes abstract.

Exemple : j'ai une classe abstraite qui représente un tableau, je ne sais pas comment le tableau sera fait, mais je déclare la manière dont on devra récupérer la taille et un élément particulier (deux méthodes abstraites), cela suffit pour implémenter la méthode de calcul de l'élément le plus petit du tableau.

public abstract Array
{
    public abstract int getSize();

    public abstract int get(int i);

    public int minimum()
    {
        int min = Integer.MAX_VALUE;
        for (int i=0, sz=getSize(); i<sz; i++)
        {
            int x = get(i);
            if (x<min)
                min=x;
        }
        return min;
    }
}
0
touta_touta Messages postés 337 Date d'inscription   Statut Membre Dernière intervention   6
 
bonsoir ,merci ,j'ai pas bien compris le sens d'implémenter ,qui'est ce que cela veut dire sil te plait ?
0
touta_touta Messages postés 337 Date d'inscription   Statut Membre Dernière intervention   6
 
veut dire l'utiliser? cette expression je l'ai vu pas mal de fois mais je ne sais pas a quoi sert .
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Implémenter une méthode, ça veut dire lui associer du code.

Des méthodes abstraites ne font rien du tout, il n'y a pas de code.

Dans l'exemple que j'ai donné voici une implémentation possible :

private int[] tab;

public int getSize()
{
    return tab.length;
}

public int get(int i)
{
    return tab[i];
}
0
touta_touta Messages postés 337 Date d'inscription   Statut Membre Dernière intervention   6
 
j'ai un exemple :
public abstract class Employe {
private String nom;
private String prenom;
public Employe (String n,String p)
{ nom=n;
prenom=p;}
cette class est abstraite mias il a un code non?
0
KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
En effet, mais du coup tu pourrais très bien enlever le mot clé abstract et instancier directement des objets de la classe Employe. Une classe abstraite devrait au moins avoir une méthode abstraite, sinon ça n'a assez peu d'intérêt...
0