Maison >Java >javaDidacticiel >La différence entre les classes abstraites et les interfaces en Java
En Java, l'abstraction est réalisée grâce à des classes et des interfaces abstraites. Les deux contiennent des méthodes abstraites que les sous-classes ou les classes d’implémentation doivent implémenter. Voici les différences importantes entre les classes abstraites et les interfaces.
Sr.No. | clé | Classe abstraite | Interface |
---|---|---|---|
1
| Méthodes prises en charge | Les classes abstraites peuvent avoir à la fois des résumés méthodes et méthodes spécifiques. | Les interfaces ne peuvent avoir que des méthodes abstraites. À partir de Java 8, il peut avoir des méthodes par défaut et statiques. L'interface prend en charge l'héritage multiple. |
3 | Variables prises en charge | Prend en charge les variables finales, non finales, statiques et non statiques. | Seules les variables statiques et finales sont autorisées. |
4 | Implementation | Les classes abstraites peuvent implémenter des interfaces. | L'interface n'a pas besoin d'implémenter l'interface, ou elle peut étendre l'interface. |
5 | Keywords | Une classe abstraite déclarée à l'aide du mot-clé abstract. | Les interfaces sont déclarées à l'aide du mot-clé interface. |
6 | Héritage | Une classe abstraite peut hériter d'une autre classe en utilisant le mot-clé extends et implémenter l'interface. | Les interfaces ne peuvent hériter que des interfaces. |
7 | Héritage | Les classes abstraites peuvent être héritées à l'aide du mot-clé extends. | Les interfaces ne peuvent être implémentées qu'à l'aide du mot-clé Implements. |
Accès | Les classes abstraites peuvent avoir tout type de membres, tels que privés et publics. | Les interfaces ne peuvent avoir que des membres publics. | |
Exemple de classe abstraite et d'interface | JavaTester.javapublic class JavaTester { public static void main(String args[]) { Animal tiger = new Tiger(); tiger.eat(); Cat lion = new Lion(); lion.eat(); } } interface Animal { public void eat(); } class Tiger implements Animal { public void eat(){ System.out.println("Tiger eats"); } } abstract class Cat { abstract public void eat(); } class Lion extends Cat{ public void eat(){ System.out.println("Lion eats"); } }Output Tiger eats Lion eats |
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!