web-dev-qa-db-fra.com

Une classe abstraite peut-elle étendre une autre classe abstraite et augmenter la fonctionnalité

J'ai une classe abstraite. Je veux étendre la classe abstraite par une autre classe abstraite, puis implémenter la classe abstraite étendue. Est-ce possible. Si oui, est-ce une bonne approche du point de vue OOPS?

26
Saurabh Kumar

Je ne suis pas sûr de Java en particulier, mais il devrait être valide.

En termes de POO, si cela a du sens, exécutez-le. Pour utiliser d'anciens exemples, vous pouvez avoir une classe abstraite Vehicle puis LandVehicle et FlyingVehicle abstract. Tant que votre exemple a du sens en tant que classe abstraite, alors tout devrait bien se passer.

28
Matthew Scharley

Oui, c'est possible, et je ne vois pas de raison de ne pas l'utiliser si vous en avez besoin (avertissement: mais il existe cependant de nombreuses façons de mal utiliser cela et de compliquer les choses, comme avec tout dans la programmation en général).

Une chose à noter est que la deuxième classe abstraite n'a pas besoin d'implémenter des méthodes abstraites de la première classe, mais le premier concret doit implémenter les deux.

13
Denis Biondic

Oui, vous pouvez! Une classe abstraite peut être étendue par une autre classe abstraite

4
Feng Zheng

Oui!

Mais cela n'a de sens que si la sous-classe abstraite ajoute plus de fonctionnalités (abstraites ou non).

Sinon, je ne vois pas l'intérêt.

2
Petar Ivanov

Oui, vous pouvez le faire. Et c'est une bonne pratique si votre classe enfant ajoute plus de fonctionnalités. Il permet d'évoluer vers la spécification. Votre classe parent devient une classe plus générale et la classe enfant une classe plus spécifique. Et vous pouvez implémenter les deux selon vos besoins.

0
Sumit