differences between extends and implements