How do you reconcile if A implements a method called z and b implements a method called z and you have:
child : a, b
now if my client code calls new child().z(). Which implementation is being called? I don't think its so much as that its evil it just raises a whole lot of sticky points and provides little value