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 :

Empêcher ou limiter l'héritage


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Par défaut Empêcher ou limiter l'héritage
    Salut,

    Est-il possible d'empêcher ou limiter l'héritage d'une classe ?

    Je voudrais savoir ce qu'il existe comme possibilités dans le cas où il voudrais éviter que des classes compilées soient "détournées".

    Je sais qu'il est conseillé d'utiliser la keyword private et il y a peut être le mot final. Existe t-il des astuces en plus de cela ?

  2. #2
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Tu as tout dis, private, final.
    Ensuite tu pourrais éventuellement inventer d'autres restrictions via les annotations et APT mais est-ce vraiment utile ?

  3. #3
    Membre confirmé
    Inscrit en
    Septembre 2008
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 234
    Par défaut
    Citation Envoyé par natha Voir le message
    mais est-ce vraiment utile ?
    Pas avec une application normale et ni dans un environnement sécurisé.

    Disons que j'ai le projet de faire une petite application shareware et il serais intéressant d'avoir un mode sécurisé où certaines classes seraient vérouillées pour éviter qu'elles soient subtituées d'une manière ou de l'autre. Après ca, il reste le problème du bytehacking qui est plus délicat.

    P.S: En effet, grâce aux annotations et l'introspection, il y a la possibilité d'ajouter des restrictions.

  4. #4
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Ah dans ce cas on dirait qu'il faut te tourner vers l'obfuscation de code. Il y a des obfuscateurs java gratuits et d'autres payant.
    Demande à ton ami Google plus d'infos

  5. #5
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    22
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 22
    Par défaut Empeche le clonage
    Salut,

    déclare une interface si tu veux empêcher l'héritage

    fabrique un Singleton si tu veux une seule instance de ta classe (le constructeur est privé)

    et pense à surcharger la méthode clone()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    public final void clone() throws java.lang.CloneNotSupportedException {
         throw new java.lang.CloneNotSupportedException();
    }
    car elle permet de contourner tes constructeurs,

    enfin çà dépend de ce que tu appelles "limiter"

  6. #6
    Membre éprouvé Avatar de nabodix
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 93
    Par défaut
    Je savais pas qu'il y avait moyen d'influer sur le nombre d'objets créé
    Mais ca à l'air amusant comment tu fais (le Singloton) ?

    En quoi la déclaration d'une interface va t'empêcher d'étendre la classe? (Par contre le modificateur final, pour une classe, empêchera celle ci d'être étendue..)

    Pour clone(), j'y aurait pas pensé.. Mais en fait, il faut bien que la classe étende clonable, pour pouvoir cloner un object, non? Donc à quoi servirait de surcharger clone() ?
    Si il y a des méthodes pour contourner ce problème, ca m'intéresse

    Sinon pour le sujet premier du post, (vu que tu veux protéger ton code) je te conseil aussi de regarder du coté des obfuscateurs ==> http://java-source.net/open-source/obfuscators ou tu compile en natif avec gcj

Discussions similaires

  1. [Admin] BO XI R3.1 SP5 - Limiter ou empêcher l'ajout de documents locaux
    Par jfox dans le forum Administration-Migration
    Réponses: 4
    Dernier message: 20/02/2014, 10h47
  2. Réponses: 5
    Dernier message: 31/08/2011, 15h33
  3. Réponses: 3
    Dernier message: 17/10/2008, 16h03
  4. Réponses: 2
    Dernier message: 17/08/2006, 12h36
  5. [Comparatifs] Limites nombres tables et quantité de données
    Par benj63 dans le forum Décisions SGBD
    Réponses: 7
    Dernier message: 13/06/2002, 21h31

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