Utilisation d'une classe abstraite sans méthodes abstraites
Une classe abstraite n'a pas besoin d'inclure toutes les méthodes abstraites.
Est-il une autre raison de faire une classe abstraite autre que le fait que les classes abstraites ne peut pas être instanciée?
source d'informationauteur gifpif
Vous devez vous connecter pour publier un commentaire.
Le rôle principal d'une classe abstraite est de fournir une racine de la classe à partir de laquelle le béton, (c'est à dire non-abstraite) les sous-classes peuvent être dérivées. C'est un outil puissant et polyvalent caractéristique qui favorise le code de la réutilisation. Les classes abstraites encapsuler les caractéristiques générales qui sont communes à un éventail de types de données - fonctions qui sont trop générales pour être significatif dans la classe abstraite, mais qui peut être redéfinie dans une sous-classe
Une classe avec une méthode abstraite est automatiquement abstrait lui-même et doit se définir en tant que tel avec le mot clé abstract - il est intéressant de noter, d'une classe abstraite n'a pas besoin de contenir toutes les méthodes abstraites
Une classe abstraite ne peut pas être instanciée - en d'autres termes vous ne pouvez pas créer des instances (objets) d'une classe abstraite
Des références à des objets d'une classe abstraite peut être déclaré même si les objets de classes abstraites ne peuvent pas être instanciées, e.g Compte, il ne va pas générer une erreur de syntaxe
Si une sous-classe d'une classe abstraite remplace, c'est à dire donne un mise en application de chaque méthode abstraite dans sa super-classe, sous-classe est appelée classe de béton et d'objets de la sous-classe peut être créé
Si une sous-classe d'une classe abstraite ne remplace pas (l'application) de toutes les méthodes abstraites il hérite, cette sous-classe est elle-même abstraite et doit être déclaré en tant que tel
Classe abstraite désigne le définition de la classe n'est pas complète et donc ne peut pas être instanciée. Même si elle n'a pas de méthode abstraite, c'est une indicateur que la classe est disponible pour l'héritage. Même si elle est mise en œuvre pour toutes les méthodes, la mise en œuvre peut encore ne pas être complète et doit être remplacée par l'extension de la classe.
Probablement pas. Il permettrait d'éviter une "assistance statique" classe d'être instanciée, mais je pense que l'utilisation de cette façon serait de mauvais style.
Comme disent les autres, s'il est destiné à être une classe de base -- avec les descendants de déclarer & mise en œuvre d'interfaces, de la fonctionnalité, ce qui est trop spécifique pour la super-classe -- puis
abstract
pourrait être appropriée dans la superclasse.Dans ce cas, c'est une déclaration que le super n'est pas utile en soi, et que les sous-classes va faire quelque chose de plus, qu'ils vont déclarer expressément.
Vous pouvez faire une classe comme résumé ,même si vous ne voulez pas mettre en œuvre toutes les méthodes d'interface que la classe implémente.
Selon java docs.
Toute façon vous ne pouvez pas instancier une classe qui a déclaré avec résumé.
Il ne peut pas être un résumé de la fonction dans un non classe abstraite!
Donc, si vous avez besoin d'une fonction abstraite dans votre classe pour quelque raison que ce soit, vous devez déclarer votre classe abstraite.
Pourquoi aurais-je besoin d'une fonction abstraite?
Quel est le point de l'utilisation de méthodes abstraites?
Comme pour votre question, un scénario, je pense, comme suit -
J'ai extrait ci-dessous les points de Pourquoi devrais-je déclarer une classe comme une classe abstraite?
Les classes abstraites améliorer la situation en empêchant un développeur
à partir de l'instanciation de la classe de base, car un développeur l'a marqué
comme ayant des fonctionnalités manquantes.
Il fournit également au moment de la compilation de sécurité de sorte que vous pouvez vous assurer que toutes les classes qui étendent la classe abstraite fournir le strict minimum de fonctionnalités pour le travail, et vous n'avez pas besoin de s'inquiéter à propos de mettre la stub des méthodes que les héritiers d'une certaine façon, par magie, ils savent qu'ils ont de remplacer une méthode pour le faire fonctionner.
Les classes abstraites servent de modèles pour leurs sous-classes. Par exemple, la classe abstraite de l'Arbre et de la sous-classe, Banyan_Tree, a toutes les caractéristiques d'un arbre ainsi que les caractéristiques qui sont propres à l'arbre de banian.
Comprendre les différences entre une classe abstraite et une interface est essentiel. Une interface a seulement des déclarations de méthode ou des méthodes abstraites et constante de membres de données, tandis qu'une classe abstraite peut avoir des méthodes abstraites, membre de variables et de méthodes concrètes. Parce que Java ne supporte l'héritage simple, une classe peut implémenter plusieurs interfaces, mais peut s'étendre qu'une classe abstraite.