Russ Russell wrote:...
My questions are:
1) Even though Test2 implements Iface, why doesn't it need to provide implementation for the method implementMe() ?
Test2 inherits an implementation of the implementMe() method from its parent class, Test1. Therefore it does not need to re-implement it.
2) Even if I do provide a method with the same signature and return type as implementMe(), is it really an implementation of the interface method?
Yes.
3) What am I gaining (if anything) by adding "implements Iface" to the Test2 class"?
You are clearly telling anyone who uses the class Test2 that it is a valid and intended implementation of Iface. I generally do not do that, preferring to only add the implements clause on the class which actually does do the method implementation.