Maison >Java >javaDidacticiel >La différence entre l'interface et la classe abstraite

La différence entre l'interface et la classe abstraite

angryTom
angryTomoriginal
2020-02-17 14:25:545907parcourir

La différence entre l'interface et la classe abstraite

La différence entre l'interface et la classe abstraite

Il y a une grande différence entre l'interface et la classe abstraite, et leur choix reflète même si la compréhension de la nature du domaine problématique et de l'intention de conception est correcte et raisonnable.

 

Abstract class

Interface

实例化

不能

不能

一种继承关系,一个类只能使用一次继承关系。可以通过继承多个接口实现多重继承

一个类可以实现多个interface

数据成员

可有自己的

静态的不能被修改即必须是static final,一般不在此定义

方法

可以私有的,非abstract方法,必须实现

不可有私有的,默认是public,abstract 类型

变量

可有私有的,默认是friendly 型,其值可以在子类中重新定义,也可以重新赋值

不可有私有的,默认是public static final 型,且必须给其初值,实现类中不能重新定义,不能改变其值。

设计理念

表示的是“is-a”关系

表示的是“like-a”关系

实现

需要继承,要用extends

要用implements

Classe abstraite
Interface

Instanciation

Impossible

Impossible

Classe

Une relation d'héritage. Une classe ne peut utiliser la relation d'héritage qu'une seule fois. L'héritage multiple peut être obtenu en héritant de plusieurs interfaces

Une classe peut implémenter plusieurs interfaces

Les données membres

peuvent avoir leur propre

statique qui ne peut pas être modifié et doit être statique final , généralement non défini ici

méthode

Peut être privé, méthode non abstraite, doit implémenter

ne peut pas être privé, la valeur par défaut est publique, type abstrait

Variable

peut être privée, la valeur par défaut est de type convivial, sa valeur peut être redéfinie dans les sous-classes, ou Réaffectation

ne peut pas être privé. La valeur par défaut est le type final statique public, et sa valeur initiale doit être donnée. Elle ne peut pas être redéfinie dans la classe d'implémentation et sa valeur ne peut pas être modifiée.

Concept de conception

signifie "est -a " relation

représente la relation "like-a"

À mettre en œuvre

nécessite un héritage, vous devez utiliser extends

Vous devez utiliser des impléments

1. Similitudes

A. Les deux sont des classes abstraites et aucune ne peut être instanciée. B. Les classes d'implémentation d'interface et les sous-classes de la classe abstraite doivent implémenter les méthodes abstraites déclarées. Apprentissage recommandé : Tutoriel Java2. DifférencesA. être utilisée. La classe abstraite doit être héritée et utilise des extensions. B. Une classe peut implémenter plusieurs interfaces, mais une classe ne peut hériter que d'une seule classe abstraite. L'interface C. met l'accent sur la mise en œuvre de fonctions spécifiques, tandis que la classe abstraite met l'accent sur la relation de propriété. D. Bien que la classe d'implémentation d'interface et les sous-classes de la classe abstraite doivent implémenter la méthode abstraite correspondante, les formes d'implémentation sont différentes. Chaque méthode de l'interface est une méthode abstraite, qui est uniquement déclarée (déclaration, pas de corps de méthode) et la classe d'implémentation doit l'implémenter. Les sous-classes de la classe abstraite peuvent être implémentées de manière sélective. 3. Occasions d'application de l'interface A. Les classes ont besoin d'interfaces spécifiques pour la coordination, quelle que soit la manière dont elles sont mises en œuvre. B. Il existe sous la forme d'un identifiant qui peut implémenter une fonction spécifique, ou il peut s'agir d'un pur identifiant sans aucune méthode d'interface. C. Un groupe de classes doit être traité comme une seule classe, et l'appelant ne contacte ce groupe de classes que via l'interface. D. Nécessité d'implémenter plusieurs fonctions spécifiques, et ces fonctions peuvent n'avoir aucun lien. 4. Occasions d'application de la classe abstraite En un mot, lorsqu'à la fois une interface unifiée et des variables d'instance ou des méthodes par défaut sont nécessaires, alors vous pouvez l'utiliser. Les plus courants sont : A. Définir un ensemble d'interfaces, mais ne pas vouloir forcer chaque classe d'implémentation à implémenter toutes les interfaces. Vous pouvez utiliser une classe abstraite pour définir un ensemble de corps de méthode, ou même des corps de méthode vides, puis laisser les sous-classes choisir les méthodes qui les intéressent. B. Dans certains cas, les interfaces pures ne peuvent à elles seules satisfaire la coordination entre les classes. Des variables représentant les états de la classe sont également nécessaires pour distinguer différentes relations. Le rôle intermédiaire de l’abstrait peut très bien y répondre. C. Standardise un ensemble de méthodes mutuellement coordonnées, dont certaines sont communes, indépendantes de l'état et peuvent être partagées, sans qu'il soit nécessaire que les sous-classes les implémentent séparément, tandis que d'autres méthodes nécessitent que chaque sous-classe les implémente ; selon son propre Un état spécifique pour réaliser une fonction spécifique. Pour plus de tutoriels de programmation, veuillez continuer à prêter attention au site Web PHP chinois.       

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:
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