【JAVA SE】La différence entre "classe abstraite" et "interface"

Bons conseils

Bonjour à tous, je suis Cbiltps. Dans mon blog, s'il y a des phrases difficiles à comprendre ou des points clés difficiles à exprimer avec des mots , j'aurai des photos . Alors mon blog avec des photos est très important ! ! !

Les points de connaissance de cette section sont extraits de mon blog principal , qui sert en fait de contexte élargi pour refléter l'ordre logique de tous les points de connaissance . Par conséquent, je vais retirer les choses qui méritent d'être discutées séparément, afin que tout le monde puisse les manger !

Les corrections/ajouts sont les bienvenus, allez-y !

début de texte

Classe abstraite : une classe est modifiée par abstract , elle est directement appelée classe abstraite (la définition n'est pas importante !)

  • Les classes abstraites ne peuvent pas être instanciées directement (une erreur sera signalée directement)

  • Les classes abstraites peuvent avoir des méthodes et des membres ordinaires

  • Les classes ordinaires héritent des classes abstraites et toutes les méthodes abstraites des classes abstraites doivent être réécrites dans cette classe ordinaire (peut être remplacée et appelée)

  • Les méthodes abstraites ne peuvent pas être privatedécorées

  • Une classe abstraite B hérite de la classe abstraite A, alors cette classe abstraite A n'a pas besoin d'implémenter la méthode abstraite de la classe abstraite A !

  • Sur la base de la relation d'héritage ci-dessus, la classe ordinaire C hérite de la classe abstraite B, alors les méthodes abstraites en A et B doivent être réécrites !

  • Les classes abstraites et les méthodes abstraites ne peuvent pas être finalmodifiées !

Interface : dans une classe, les méthodes portant le même nom sont considérées comme surchargées si elles ont des listes de paramètres différentes ( types de paramètres différents , nombres de paramètres différents ou même ordre différent des paramètres ). Dans le même temps, la surcharge n'a aucune exigence sur le type de retour , qui peut être identique ou différent, de sorte que la surcharge ne peut pas être jugée par le fait que le type de retour est le même .

  • Les interfaces ne peuvent pas être instanciées par elles-mêmes
  • Les méthodes contenues dans l'interface sont toutes 抽象方法, et les champs ne peuvent contenir que 静态常量!
  • Les méthodes ordinaires dans les interfaces ne peuvent pas avoir d'implémentations spécifiques . Si vous voulez les implémenter, vous devez utiliser le mot-clé default pour modifier cette méthode !
  • Une interface peut avoir une méthode statique , et cette méthode statique peut avoir un corps de méthode
  • La méthode dans l'interface doit être une méthode abstraite , donc abstraite peut être omise
  • La méthode dans l'interface doit être public , donc le public peut être omis

Remarque et résumé des différences :

  • Ni l'un ni l'autre ne peut être instancié individuellement
  • Les classes abstraites utilisent le mot clé extend pour hériter des classes abstraites ; les sous-classes utilisent le mot clé implements pour implémenter les interfaces
  • Les méthodes abstraites peuvent avoir des modificateurs tels que public , protected et default ; les méthodes d'interface ont le modificateur par défaut public et les autres modificateurs ne peuvent pas être utilisés.
  • Les classes abstraites ne peuvent être héritées que d'une seule manière ; les interfaces peuvent être implémentées de plusieurs manières
  • Il peut y avoir des méthodes et des membres ordinaires dans la classe abstraite ; les méthodes contenues dans l'interface sont toutes 抽象方法, et les champs ne peuvent contenir que 静态常量!

insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/Cbiltps/article/details/122550331
conseillé
Classement