contrairement aux questions qui surgisses sur ces deux termes, je voudrais avouer que moi je comprends parfaitement la différence entre les deux ainsi que leurs avantages en ce qui concerne le polymorphisme et la factorisation du code. Mes questions sont les suivantes :

1) Tout ce que je fais avec une classe abstraite, je le fais avec une classe simple que je décide de ne pas instancier et là donc je me demande l'importance du mot clé Abstract... si ce n'est laisser le refus de l'instanciation au compilateur ?

2) En dehors du faite que je peux déclarer des constantes 'globale' dans mon interface et en bénéficier dans tout le code, du fait qu'une classe peut implémenter plusieurs interfaces et enfin à cause du polymorphisme, Je ne vois pas leur importance quant-à 'non-répétition du code

Exemple :

Soit une interface Int1 ayant une méthode M1 et 50 classes : Class1, Class2 et Class3....Class50 qui implémentent cette méthode.
Si demain je me rends compte dans ma conception qu'une seconde méthode améliorerai l'application que ferais-je ?
Je sais que je peux créer une seconde interface Int2 avec la méthode M2 et je choisirais soit de faire pour éviter d'implémenter cette méthode dans mes 50 classes parce que même si je crée une deuxième Interface, ça n'enlèvera pas le fait que j'ai besoin de cette méthode te je dois l'implémenter, donc autant mieux l'ajouter simplement dans la première Interface et l'implémenter partout.

3) Quelqu'un a-t-il une idée comment faire pour éviter d'implémenter cette méthode 50 fois, si possible le faire une seul fois en établir un lien avec les autres 50 classes.