Type abstrait de Données et de l'Interface
Je suis nouveau sur Java. Quelle est la différence entre le type Abstrait de données et de l'Interface.
Par Exemple, Nous avons un ListADT
interface MyListADT<T> {
void add(T var);
void add(T var,int pos);
void display();
T remove(int pos);
void clear();
boolean contains(Object o);
}
Où nous définissons l'ADT comme une interface. Maintenant, Quelle est la différence entre l'ADT et de l'Interface Ou de l'ADT est une Interface
- double possible de Quelle est la différence entre une interface et une classe abstraite?
- vous devriez avoir fait des recherches avant de poser cette question .Cette question/réponse est disponible sur de nombreux endroits, alors vous ca facilement le trouver.
- Quelle est la différence entre l'Abstrait de Classe et de Type Abstrait de Données
- DownVoter pouvez laisser un commentaire ici. Thaknks
- double possible de la classe Abstraite vs Interface en Java
- Pour tous ceux qui cherchent à ce sujet dans l'avenir - cette question n'est pas un doublon de l'une de ces questions proposées. Il est tout à fait spécifique sur les Types de Données Abstraites, qui, plusieurs réponses ont mentionné (et la majorité des réponses complètement raté), et non pas les Classes Abstraites.
- C'est l'un des messiest question et de la réponse de la page j'ai trouvé ici sur DONC lol
Vous devez vous connecter pour publier un commentaire.
classe abstraite peut contenir des non-final variables.
classe peut avoir l'habitude des saveurs de membres de la classe comme privé,
la protection, etc..
cochez cette lien pour info
Il semble y avoir une confusion dans ce Q&A. La question était de savoir "Type Abstrait de Données et Interface" et la plupart des réponses concetrating sur "les Classes Abstraites".
Les termes de "type abstrait de données" et la classe abstraite référence à deux concepts entièrement différents, bien que les deux d'entre eux utilisent le mot "abstrait". Un type abstrait de données est une unité autonome, type défini par l'utilisateur, qui rassemble des données avec un ensemble d'opérations liées. Il se comporte de la même manière qu'un type ne. Cependant, il n'hérite pas des autres classes, ni servir de base pour d'autres classes dérivées. Si vous effectuez une recherche à ce sujet dans le wiki, vous verriez "Un type abstrait de données est défini comme un modèle mathématique des objets de données qui constituent un type de données ainsi que les fonctions qui opèrent sur ces objets. Il n'existe pas de conventions standard pour les définir. Une large section peut être établie entre "impératif" et "fonctionnelle" de la définition des styles." Par exemple, en Java, nous avons la Liste de l'interface. Il définit une structure de données avec l'ensemble de la méthode de fonctionner, mais l'habitude de fournir toute implementaion en tant que tel.
En revanche, une classe abstraite est rien, mais un type abstrait de données. Une classe abstraite est une classe qui est déclarée abstraite — 'il peut ou peut ne pas inclure les méthodes abstraites'. Les classes abstraites ne peut pas être instanciée, mais ils peuvent être sous-classé. Il n'est pas un type de données. Une classe abstraite est simplement un squelette de l'interface, qui spécifie un ensemble de services que ses sous-classes en œuvre. Malheureusement, la distinction entre les deux concepts est souvent confondu. Beaucoup de gens à tort d'utiliser le terme de type abstrait de données lorsqu'ils se réfèrent en fait à une classe abstraite.
À mon avis, les Interfaces de Java est la mise en oeuvre de "type Abstrait de Données"
Vous pouvez lire à ce sujet "Type Abstrait De Données" dans le Wiki. Dans additiona pour que, si vous voulez en savoir plus au sujet du type abstrait de données en java, vous pouvez consulter ce lien, http://www.e-reading.ws/bookreader.php/138175/Abstract_Data_Types_in_Java.pdf, son vraiment bon.
La plupart d'entre vous connaissent peut-être avec les classes abstraites, Encore, vous pourrez le lire à partir de http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html
Pour ajouter à cette confusion, Java 8 introduit quelque chose appelé "Méthodes Par Défaut", par lequel on pourrait effectivement donner des implémentations de méthodes dans l'interface. Pour éliminer cette confusion, vous pouvez consulter cette stackoverflow question Interface avec les méthodes par défaut vs classe Abstraite Java 8
Essayer de penser comme ça:
Interface Java est un type, qui se résume à une ensemble de signatures de méthode. N'importe quel type, prêt à être référencé en tant que l'interface doit fournir à la mise en œuvre de ces signatures. En réalité, il n'y a pas de comportement de contrat. Votre application peut ne rien faire et à toujours être "mise en œuvre" une interface.
Java classe abstraite est un type, avec partiellement spécifié comportement dont la mise en œuvre interne pour une raison quelconque doit être spécifié dans son héritière. Cette classe n'ont de comportement, qui peut être redéfini/spécifiées dans ses héritiers.
ADT est un ensemble de comportements attendus. Vous supposez qu'après l'appel de
adt.remove(element)
vous appelezadt.get(element)
et de recevoir desnull
.La réponse à votre question est: juste une interface n'est pas assez pour être un outil ADT.
MyListADT<T>
est un outil ADT. Son comportement extérieur doit respecter le guide pratique du concept. Cela signifie que, pour être considéré comme de l'ADT, votre type doit effectuer la mise en œuvre, qui résulte soit dans la classe abstraite ou une classe normale. Par exemple:java.util.List<T>
est une interface pour un ADT, maisjava.util.ArrayList<T>
etjava.util.LinkedList<T>
sont en fait ADTs, parce que leur comportement ne sont conformes à l'ADT concept.La combinaison de données, ainsi que ses méthodes est appelée un Type Abstrait de Données(ADT).
Une Interface Java est un moyen de spécifier ( mais pas l'application) de l'ADT.
Il indique les noms, les paramètres et les types de retour(c'est à dire, en-tête) de l'ADT méthodes.
L'interface ne permet pas de spécifier les champs de données (à l'exception des constantes), comme c'est un détail d'implémentation.
Une Interface Java spécifie les exigences d'un ADT comme un contrat entre le fournisseur de service ( classe qui implémente l'ADT) et le client (l'utilisateur de la classe).
Conformément à la [wiki] http://en.wikipedia.org/wiki/Abstract_data_type
En informatique, un type abstrait de données (ADT) est un modèle mathématique pour une certaine classe de structures de données qui ont un comportement similaire; ou pour certains types de données d'un ou de plusieurs langages de programmation qui ont les mêmes sémantique. Un type abstrait de données est définie indirectement, uniquement par les opérations qui peuvent être réalisées et en mathématique des contraintes sur les effets (et éventuellement le coût) de ces opérations.
Pour le langage de programmation Java
vous pouvez prendre Java la Liste de l'interface comme un exemple. L'interface ne définit pas explicitement les comportements à tous, car il n'existe pas de Liste concrète de la classe. L'interface définit un ensemble de méthodes que d'autres classes (par exemple, ArrayList et LinkedList) doit mettre en œuvre pour être considérée comme une Liste.
mais la ligne de fond est que c'est un concept
En java-
interface peut avoir qu'méthode abstraite qui signifie que vous ne pouvez déclarer la méthode que j'ai.e . la méthode peut avoir n'importe quel défaut de mise en œuvre.mais la classe abstraite peut avoir à la fois abstrait ou de l'ensemble de la méthode.
si la classe de l'extension est abstraite, alors votre enfant de la classe doit être déclarée abstraite ou doit mettre en œuvre toute méthode abstraite de la super-classe.
Dans le cas de l'interface, vous pouvez implémenter autant d'interface que vous souhaitez.Ici aussi, vous devez mettre en œuvre toutes les méthode abstraite de toutes les interfaces dans votre classe ou il faut la déclarer abstraite.
suivez ces lien
http://javapapers.com/core-java/abstract-and-interface-core-java-2/difference-between-a-java-interface-and-a-java-abstract-class/
http://www.codeproject.com/Articles/11155/Abstract-Class-versus-Interface
Quelle est la différence entre une interface et une classe abstraite?
Plus de dégagement.
La syntaxe et des exemples
syntaxe de la classe abstraite
exemple de classe abstraite
syntaxe de l'interface
exemple de l'interface
la mise en œuvre de l'interface
l'extension de l'interface
prolongement de plusieurs interfaces
s'étend et met en œuvre les Deux
La combinaison de données avec ses méthodes est appelée un Type Abstrait de Données (ADT).
Une Interface Java est un moyen de spécifier un Type Abstrait de Données (ADT).
Vous pouvez déclarer une classe abstraite, lorsqu'il contient zéro ou plusieurs méthodes abstraites ou Lorsqu'une interface est implémentée dans une classe où tous les modes ne sont pas mises en œuvre.