java - 抽象类和接口?
PHP中文网
PHP中文网 2017-04-18 10:11:05
0
9
472
PHP中文网
PHP中文网

认证高级PHP讲师

répondre à tous(9)
黄舟

Par exemple, par exemple, les créatures et les personnes. À l'heure actuelle, les créatures peuvent être utilisées comme interfaces, les personnes peuvent être utilisées comme classes abstraites qui implémentent des organismes, et les hommes et les femmes peuvent être utilisées comme classes d'implémentation concrètes. être conçu comme ça ? Parce que la biologie est un concept très abstrait, il est difficile pour vous d'abstraire son comportement spécifique (c'est-à-dire l'implémentation d'une méthode spécifique). À l'heure actuelle, pourquoi les humains peuvent-ils être utilisés comme classe abstraite ? il peut avoir des comportements et des actions spécifiques. Par exemple, vous pouvez ramper, mais les hommes et les femmes peuvent avoir des caractéristiques sexuelles différentes. En même temps, il peut y avoir des comportements publics mais des caractéristiques comportementales différentes. d'une classe abstraite et peut être implémenté par des sous-classes. C'est probablement ça.

Peter_Zhu

Par exemple, vous avez beaucoup d'objets similaires (après y avoir longuement réfléchi, il n'est pas approprié d'utiliser d'autres mots), qu'il s'agisse de personnes ou de choses. Leurs propriétés sont presque les mêmes, vous pouvez donc les résumer dans une classe. Par exemple, la catégorie voiture possède des attributs tels que les roues, le moteur, le châssis et la coque. new un objet pour enregistrer les attributs actuels. Peut-être souhaitez-vous enregistrer ces attributs dans la base de données, ou vous souhaiterez peut-être les afficher à l'utilisateur. L'objet actuel joue le rôle de sauvegarde des données. Les objets peuvent non seulement sauvegarder des données, mais aussi avoir leurs propres méthodes, comme démarrer une voiture. Cliquez sur un bouton pour appeler la méthode de lancement de l'objet actuel. Les méthodes des classes générales seront liées aux changements de données. Je parle des méthodes générales, pas de toutes. Par exemple, la classe de connexion à la base de données ne modifiera pas les données, mais jouera uniquement un rôle dans la connexion à la base de données.
Les interfaces sont généralement destinées aux appels externes. Vous écrivez une série de méthodes qui accomplissent finalement une action utile. Le tout début de cette série de méthodes est l’interface, vous pouvez la comprendre ainsi. Par exemple, dans une interface de connexion simple, après avoir entré le nom d'utilisateur et le mot de passe, cliquez sur OK pour commencer à appeler l'interface de connexion en arrière-plan et transférer le nom d'utilisateur et le mot de passe au serveur. Le serveur a besoin d'une méthode pour les recevoir, et après les avoir reçus. , il doit vérifier le mot de passe, ce qui est une autre méthode. Après vérification, un message est renvoyé au client. La connexion est réussie ou échouée et cette série d'actions est terminée. Bien sûr, vous pouvez les compléter dans une méthode. Bref, le point de départ est l'interface.
La déclaration ci-dessus est relativement simple et pas tout à fait exacte.

Ty80

Une interface représente une capacité/un comportement. Par exemple : si les gens peuvent courir et les chiens peuvent courir, vous pouvez définir l'interface IRunable. Les interfaces sont un bon moyen de réaliser un découplage entre les composants.
Les classes abstraites sont conçues pour réaliser le polymorphisme et rendre le code plus facilement extensible.

刘奇

Les interfaces sont comme des cours abstraits 100% naturels.

迷茫

Les interfaces sont plus enclines à définir un protocole pour un groupe de classes, tandis que les classes abstraites ont fait un pas vers l'implémentation.

Par exemple, le modèle de méthode modèle utilise des classes abstraites pour implémenter certaines méthodes courantes, tout en reportant différentes méthodes aux sous-classes pour l'implémentation.

阿神

Pour un exemple simple, si vous voulez maintenant faire abstraction des personnes de tous les pays, alors vous penseriez à l'abstraire dans une interface, et puis il existe une méthode appelée sayHello :

public interface Human{
    
    String sayHello();
}

OK, maintenant chaque objet qui implémente cette interface n'a plus qu'à implémenter la méthode sayHello, ce qui signifie que les gens de différents pays ont différentes manières de se saluer.

Mais maintenant que les affaires sont devenues plus compliquées, vous avez besoin que ces personnes aient certaines capacités générales, telles que cry, walk Ensuite, à ce stade, devriez-vous envisager de faire abstraction de Human dans une classe abstraite, j'aime comme ça :

public abstract class Human{
    
    public abstract String sayHello();
    
    public String cry(){
        System.out.println("wu~wu~wu~wu~wu~");
    }
    
    public String walk(){
        System.out.println("左右左 左右左");
    }
}

Pour résumer, s'il n'y a que des méthodes abstraites, alors utilisez des interfaces. S'il existe des méthodes concrètes générales, utilisez des classes abstraites

.
刘奇

参考:
Les didacticiels Java™ :: Apprendre le langage Java :: Interfaces et héritages :: Héritages :: Méthodes et classes abstraites :: Classes abstraites comparées aux interfaces

黄舟

Les classes abstraites sont utilisées pour les choses abstraites, les comportements abstraits des interfaces

左手右手慢动作

Cette classe définit des opérations unifiées et fournit des méthodes pour les objets

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal