java - Why separation of interface and implementation? -


in production code see classes defined follows:

public interface somecomponent { // methods } public class somecomponentimpl implements somecomponent { // methods}  public interface somecomponentv2 extends somecomponent { // methods } public class somecomponentv2impl extends somecomponentimpl implements somecomponent { // methods } 

why in case want separate interface , implementation?

or put way, why bad have 1 base class, , let v2 extend/override v1 follows:

public class somecomponent { // methods } public class somecomponentv2 extends somecomponent  {   // override methods reimplementation   // add new methods new features. } 

it practice separate interface , implementation of class because can swap out classes.

imagine want test application depends on web-service bills every request. in addition have class performs real requests web-service, build class implements same interface returns fake data avoid generating costs every request.

every time inherit base-class there chance inherit behaviour don't want inherit. interface pure contract , gives freedom let choose base-class independently of described advantage.


Comments

Popular posts from this blog

Java 3D LWJGL collision -

spring - SubProtocolWebSocketHandler - No handlers -

methods - python can't use function in submodule -