Il ne faut pas implémenter les fonctions dans C, juste appeler la bonne fonction de C1 ou C2.
Là dessus : "Bon après c'est sûr que l'héritage multiple dans le style C++ ça ajoute son lot de complexité avec les héritages virtuels, ... mais au moins on a le choix."
Ce sont deux choses différentes, on pourrait avoir de l'héritage multiple (qui ajoute son lot de complexité et de règle ad-hoc), sans avoir d'héritage virtuel (c'est ce à quoi sert le mécanisme des interface en Java). C'est juste qu'aucun de ces deux langages n'implémente ça. Mais c'est par exemple l'approche de la POO en OCaml si je ne me trompe pas.