2013-04-16 3 views
-4

En termes d'évolutivité serait plus sage de faire un objet de la classe concrète ou de l'interface?Débutant Évolutivité

Par exemple au lieu de:

LinkedStack<Integer> list = new LinkedStack<Integer>(); 

devrait être ceci:

StackInterface<Integer> list = new LinkedStack<Integer>(); 
+9

Qu'est-ce que Scability? – Krishnabhadra

+0

malheureusement; même avec l'amélioration de l'orthographe, la question n'a aucun sens logique –

+0

Votre droit! Merci Jack et merci pour le pointeur Krish. –

Répondre

0

La deuxième méthode est appelée pour les interfaces.

Reference link

seconde est prefarable comme. utilise l'interface comme référence pour l'objet de la sous-classe.

+0

Cela m'a amené à ma réponse, merci NPKR. –

0

À mon avis:

LinkedStack<Integer> list = new LinkedStack<Integer>(); 

est mieux que si vous avez besoin des méthodes spécifiques sur LinkedStack qui ne sont pas déclarées au StackInterface.

StackInterface<Integer> list = new LinkedStack<Integer>(); 

est mieux si vous ne le faites pas, parce que vous pouvez « brancher » toute l'interface de implémenteur pour différentes raisons (raisons d'efficacité, par exemple).

+0

Je ne trouve toujours pas une bonne raison d'utiliser la première option. Si je dois l'utiliser d'une certaine façon, je préférerais encapsuler cette partie du code dans une méthode avec un avertissement de commentaire que cette méthode va essayer d'utiliser une implémentation spécifique de l'interface pour un travail très spécifique, par exemple. 'TreeMap' ou' TreeSet'. –