Maison Java javaDidacticiel Quand utiliser des interfaces et quand utiliser des classes abstraites en Java

Quand utiliser des interfaces et quand utiliser des classes abstraites en Java

May 01, 2024 pm 12:15 PM
接口 抽象类

Quand utiliser les interfaces : Définir des fonctions partagées, implémentées par différents types d'objets. Définissez des interfaces de rappel (telles que des écouteurs d'événements). Implémentez l’héritage multiple. Quand utiliser des classes abstraites : définissez des fonctions communes implémentées via l’héritage. Implémentez l'héritage unique et le polymorphisme. Définissez une méthode ou un champ protégé.

Java 中何时使用接口何时使用抽象类

Quand utiliser des interfaces et des classes abstraites en Java

En Java, les interfaces et les classes abstraites sont des concepts abstraits utilisés pour définir le comportement des objets. Malgré leurs similitudes, il existe de nettes différences dans leur finalité d’utilisation.

Interface

Une interface est un contrat qui contient des signatures de méthode (c'est-à-dire des déclarations de méthode sans implémentation). Il définit l'ensemble des méthodes publiques qu'une classe doit implémenter.

Quand utiliser les interfaces ?

  • Définir des fonctionnalités communes pouvant être partagées par différents types d'objets.
  • Lorsque vous devez définir une interface de rappel, telle qu'un écouteur d'événement.
  • Lorsque l'héritage multiple doit être implémenté (non pris en charge en Java).
public interface Animal {
    void eat();
    void sleep();
}
Copier après la connexion

Classe abstraite

Une classe abstraite est une classe partiellement abstraite qui contient une combinaison d'implémentations de méthodes et de méthodes abstraites. Les classes abstraites ne peuvent pas être instanciées, mais peuvent être héritées par les sous-classes.

Quand utiliser les cours abstraits ?

  • Définissez des fonctionnalités communes qui ne peuvent être obtenues que par héritage.
  • Lorsque vous devez implémenter l'héritage unique et le polymorphisme.
  • Lorsque vous devez définir des méthodes ou des champs protégés.
public abstract class Mammal {
    public void giveBirth() { ... }
    public abstract void makeSound();
}
Copier après la connexion

Cas pratique

Interface

Créez une interface Shape et définissez des méthodes publiques de calcul de l'aire et du périmètre :

public interface Shape {
    double getArea();
    double getPerimeter();
}
Copier après la connexion

Utilisez cette interface pour créer des classes Rectangle et Cercle :

public class Rectangle implements Shape {
    // ...
}

public class Circle implements Shape {
    // ...
}
Copier après la connexion

Classe abstraite

Créez une classe abstraite Shape et définissez des méthodes protégées pour calculer l'aire et le périmètre :

public abstract class Shape {
    protected double area;
    protected double perimeter;

    public abstract double getArea();
    public abstract double getPerimeter();
}
Copier après la connexion

Créez des classes Rectangle et Circle en utilisant cette classe abstraite, en remplaçant les méthodes getArea() et getPerimeter() :

public class Rectangle extends Shape {
    // ...
}

public class Circle extends Shape {
    // ...
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quelles sont les interfaces internes d'une carte mère d'ordinateur ? Introduction recommandée aux interfaces internes d'une carte mère d'ordinateur ? Quelles sont les interfaces internes d'une carte mère d'ordinateur ? Introduction recommandée aux interfaces internes d'une carte mère d'ordinateur ? Mar 12, 2024 pm 04:34 PM

Lorsque nous assemblons l'ordinateur, bien que le processus d'installation soit simple, nous rencontrons souvent des problèmes de câblage. Souvent, les utilisateurs branchent par erreur la ligne d'alimentation du radiateur du processeur au SYS_FAN. Bien que le ventilateur puisse tourner, il peut ne pas fonctionner lorsque le ventilateur fonctionne. L'ordinateur est allumé. Il y aura une erreur F1 "CPUFanError", qui empêchera également le refroidisseur du processeur d'ajuster intelligemment la vitesse. Partageons les connaissances communes sur les interfaces CPU_FAN, SYS_FAN, CHA_FAN et CPU_OPT sur la carte mère de l'ordinateur. Science populaire sur les interfaces CPU_FAN, SYS_FAN, CHA_FAN et CPU_OPT sur la carte mère de l'ordinateur 1. CPU_FANCPU_FAN est une interface dédiée pour le radiateur du processeur et fonctionne à 12 V.

Paradigmes de programmation et modèles de conception courants en langage Go Paradigmes de programmation et modèles de conception courants en langage Go Mar 04, 2024 pm 06:06 PM

En tant que langage de programmation moderne et efficace, le langage Go possède de riches paradigmes de programmation et des modèles de conception qui peuvent aider les développeurs à écrire du code maintenable de haute qualité. Cet article présentera les paradigmes de programmation et les modèles de conception courants dans le langage Go et fournira des exemples de code spécifiques. 1. Programmation orientée objet Dans le langage Go, vous pouvez utiliser des structures et des méthodes pour implémenter une programmation orientée objet. En définissant une structure et des méthodes de liaison à la structure, les fonctionnalités orientées objet d'encapsulation de données et de liaison de comportement peuvent être obtenues. packagemaini

Introduction aux interfaces PHP et comment les définir Introduction aux interfaces PHP et comment les définir Mar 23, 2024 am 09:00 AM

Introduction à l'interface PHP et à sa définition. PHP est un langage de script open source largement utilisé dans le développement Web. Il est flexible, simple et puissant. En PHP, une interface est un outil qui définit des méthodes communes entre plusieurs classes, réalisant le polymorphisme et rendant le code plus flexible et réutilisable. Cet article présentera le concept des interfaces PHP et comment les définir, et fournira des exemples de code spécifiques pour démontrer leur utilisation. 1. Concept d'interface PHP L'interface joue un rôle important dans la programmation orientée objet, définissant l'application de classe

Solution à NotImplementedError() Solution à NotImplementedError() Mar 01, 2024 pm 03:10 PM

La raison de l'erreur est en python. La raison pour laquelle NotImplementedError() est lancée dans Tornado peut être due au fait qu'une méthode ou une interface abstraite n'est pas implémentée. Ces méthodes ou interfaces sont déclarées dans la classe parent mais non implémentées dans la classe enfant. Les sous-classes doivent implémenter ces méthodes ou interfaces pour fonctionner correctement. Comment résoudre ce problème consiste à implémenter la méthode abstraite ou l'interface déclarée par la classe parent dans la classe enfant. Si vous utilisez une classe pour hériter d'une autre classe et que vous voyez cette erreur, vous devez implémenter toutes les méthodes abstraites déclarées dans la classe parent dans la classe enfant. Si vous utilisez une interface et que vous voyez cette erreur, vous devez implémenter toutes les méthodes déclarées dans l'interface dans la classe qui implémente l'interface. Si vous n'êtes pas sûr de savoir lequel

Application d'interfaces et de classes abstraites dans les modèles de conception en Java Application d'interfaces et de classes abstraites dans les modèles de conception en Java May 01, 2024 pm 06:33 PM

Les interfaces et les classes abstraites sont utilisées dans les modèles de conception pour le découplage et l'extensibilité. Les interfaces définissent les signatures des méthodes, les classes abstraites fournissent une implémentation partielle et les sous-classes doivent implémenter des méthodes non implémentées. Dans le modèle de stratégie, l'interface est utilisée pour définir l'algorithme, et la classe abstraite ou la classe concrète assure l'implémentation, permettant une commutation dynamique des algorithmes. Dans le modèle d'observateur, les interfaces sont utilisées pour définir le comportement de l'observateur, et les classes abstraites ou concrètes sont utilisées pour s'abonner et publier des notifications. Dans le modèle d'adaptateur, les interfaces sont utilisées pour adapter les classes existantes ou les classes concrètes peuvent implémenter des interfaces compatibles, permettant une interaction avec le code d'origine.

Aperçu du système Hongmeng : mesure réelle des fonctions et expérience d'utilisation Aperçu du système Hongmeng : mesure réelle des fonctions et expérience d'utilisation Mar 23, 2024 am 10:45 AM

En tant que nouveau système d'exploitation lancé par Huawei, le système Hongmeng a fait sensation dans l'industrie. En tant que nouvelle tentative de Huawei après l'interdiction américaine, le système Hongmeng suscite de grands espoirs et attentes. Récemment, j'ai eu la chance d'acquérir un téléphone mobile Huawei équipé du système Hongmeng. Après une période d'utilisation et de tests réels, je partagerai quelques tests fonctionnels et une expérience d'utilisation du système Hongmeng. Tout d’abord, jetons un coup d’œil à l’interface et aux fonctions du système Hongmeng. Le système Hongmeng adopte le style de conception propre à Huawei dans son ensemble, qui est simple, clair et fluide. Sur le bureau, divers

Une discussion approfondie des similitudes et des différences entre les interfaces fonctionnelles Golang et les classes abstraites Une discussion approfondie des similitudes et des différences entre les interfaces fonctionnelles Golang et les classes abstraites Apr 20, 2024 am 09:21 AM

Les interfaces fonctionnelles et les classes abstraites sont utilisées pour la réutilisabilité du code, mais elles sont implémentées de différentes manières : interfaces fonctionnelles via des fonctions de référence, classes abstraites via l'héritage. Les interfaces fonctionnelles ne peuvent pas être instanciées, mais les classes abstraites le peuvent. Les interfaces fonctionnelles doivent implémenter toutes les méthodes déclarées, tandis que les classes abstraites ne peuvent implémenter que certaines méthodes.

Quelle est la différence entre les interfaces et les classes abstraites en PHP ? Quelle est la différence entre les interfaces et les classes abstraites en PHP ? Jun 04, 2024 am 09:17 AM

Les interfaces et les classes abstraites sont utilisées pour créer du code PHP extensible, et il existe la différence clé suivante entre elles : les interfaces s'appliquent via l'implémentation, tandis que les classes abstraites s'appliquent via l'héritage. Les interfaces ne peuvent pas contenir de méthodes concrètes, contrairement aux classes abstraites. Une classe peut implémenter plusieurs interfaces, mais ne peut hériter que d'une seule classe abstraite. Les interfaces ne peuvent pas être instanciées, mais les classes abstraites le peuvent.

See all articles