IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

Classe abstraite sans méthode abstraite ou classe normale sans constructeur visible ?


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 94
    Par défaut Classe abstraite sans méthode abstraite ou classe normale sans constructeur visible ?
    Bonjour,
    J'ouvre cette discussion pour avoir un avis sur une question.

    Dans le cas où une classe héritée par plusieurs autres classes déclare des variables et définit des méthodes non abstract pour ses enfants, mais qu'elle n'a aucune méthode abstract et que celle ci ne doit pas être instanciée, feriez vous une classe abstraite qui ne définit pas de méthode abstract ou une classe normale dont on met le constructeur en private ?

  2. #2
    Membre éprouvé
    Avatar de mavina
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2004
    Messages
    1 812
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Chine

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2004
    Messages : 1 812
    Par défaut
    Citation Envoyé par Kikito
    Bonjour,
    J'ouvre cette discussion pour avoir un avis sur une question.

    Dans le cas où une classe héritée par plusieurs autres classes déclare des variables et définit des méthodes non abstract pour ses enfants, mais qu'elle n'a aucune méthode abstract et que celle ci ne doit pas être instanciée, feriez vous une classe abstraite qui ne définit pas de méthode abstract ou une classe normale dont on met le constructeur en private ?
    Salut,

    Je dirait classe abstraite.
    En effet, si tu mets une classe normale avec un constructeur privé, ca devient (presque) un singleton, il ne manquerai que la fonction getInstance().
    Or ton but n'est pas de faire un singleton mais bien de faire une classe racine, qui définit des fonctions communes.
    Je ne penses pas que le fait qu'il n'y ai pas de fonction abstraite soit un problème.

    Cordialement

    Fred

  3. #3
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Par défaut
    Bonjour,
    A mon avis tout dépend si cela a véritablement un sens d'avoir une instance de cette classe de base. Si elle ne peut pas être instanciée parce que les seules classes concrètes ne pourraient être que les classes dérivées, alors le mot clé abstract est fait pour ça, même si la classe ne déclare aucune méthode abstraite. Par contre, si l'objectif est d'empêcher toute instanciation de cette classe en dehors de la classe elle-même, c'est-à-dire que l'on ne pourrait obtenir une instance de cette classe qu'en appelant une méthode de la classe elle-même, alors un constructeur private rentre en jeu, tout en fournissant une méthode public permettant d'obtenir une instance de la classe. C'est d'ailleurs comme ça que le pattern Singleton est souvent implémenter.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    94
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 94
    Par défaut
    Merci de vos réponses, c'est donc bien ce que je pensais, dans mon cas une classe abstraite est le mieux et ça avait été mon premier réflexe, mais c'est vrai que ça me faisait bizarre de n'avoir aucune méthode abstract.

    Merci.

  5. #5
    Membre éprouvé
    Avatar de Deadpool
    Homme Profil pro
    Inscrit en
    Novembre 2005
    Messages
    1 312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 1 312
    Par défaut
    D'autant plus que, si je ne dis pas de bêtises, il est impossible d'hériter d'une classe concrète n'ayant que des constructeurs privés. Donc la classe abstraite est la seule solution.

  6. #6
    Membre chevronné
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Maroc

    Informations forums :
    Inscription : Janvier 2006
    Messages : 365
    Par défaut
    Descent a écrit :
    D'autant plus que, si je ne dis pas de bêtises, il est impossible d'hériter d'une classe concrète n'ayant que des constructeurs privés. Donc la classe abstraite est la seule solution.
    Tout à fait !

  7. #7
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    un constructeur protected c'est bien aussi.
    d'ailleurs j'ai tendance à penser que les classes abstraites ont quasi-automatiquement des constructeurs protected.
    votre avis?

Discussions similaires

  1. NoClassDefFound pour une inner classe dans une méthode de la classe
    Par joel.drigo dans le forum Général Java
    Réponses: 4
    Dernier message: 19/07/2013, 14h40
  2. Réponses: 7
    Dernier message: 24/02/2011, 13h15
  3. Classe abstraire sans méthode abstraite
    Par 0redd dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 20/08/2010, 23h42
  4. Réponses: 2
    Dernier message: 15/09/2009, 16h55
  5. Réponses: 23
    Dernier message: 16/03/2007, 20h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo