Quand on utilise abstract

Résolu/Fermé
touta_touta Messages postés 337 Date d'inscription mercredi 7 août 2013 Statut Membre Dernière intervention 8 avril 2016 - 20 déc. 2013 à 11:27
touta_touta Messages postés 337 Date d'inscription mercredi 7 août 2013 Statut Membre Dernière intervention 8 avril 2016 - 5 janv. 2014 à 23:09
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 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
20 déc. 2013 à 19:13
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 mercredi 7 août 2013 Statut Membre Dernière intervention 8 avril 2016 6
5 janv. 2014 à 21:26
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 mercredi 7 août 2013 Statut Membre Dernière intervention 8 avril 2016 6
5 janv. 2014 à 21:31
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 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
5 janv. 2014 à 21:37
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 mercredi 7 août 2013 Statut Membre Dernière intervention 8 avril 2016 6
5 janv. 2014 à 22:27
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 16734 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 24 avril 2024 3 015
5 janv. 2014 à 22:38
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