Martin Fowler wants implicit interfaces in Java and C#
What would it mean to implement an implicit interface? Essentially it would tell the type system that the ValuedCustomer class implements all the methods declared in the public interface of Customer but does not take any of its implementation, that is its public method bodies, and non public methods or data. In other words we have interface-inheritance but not implementation-inheritance.
Of course, we don't have this problem in Smalltalk (or other dynamic languages). As Martin says further down:
This issue isn't a problem with dynamically typed languages. If you want to implement another class's interface all you need to do is implement the same methods and just use the object where you need it. It's also quite common to use dynamic proxies to do this kind of thing in Java, although I feel that implicit interface implementation would be more communicative.
As I've said before - you can pick power, or handcuffs. Most developers seem to prefer the latter.