Well, Class E says it implements interface I, but then it lies!!!
Since E says it is going to implement I, it needs to provide implementations for ALL of I's member functions. I contains TWO methods, getValue() and setValue(), but here E is only implementing setValue(). Where is getValue()? Since E doesn't implement it, it should decalare that is an abstract class:
abstract class E implements I...
Item C is a little more sneaky. JLS 9.1.4 states:
All interface members are implicitly public.
So when class C implements getValue()...
It is trying to implement getValue() with weaker access priviledges (default access VS public access) so this is a compiler error.
Rob
