我感觉你并没有描述清楚你的问题,事实上如果按你问的回答,结论是具体和抽象都存在,那么...想必对你没有任何帮助!
其实,具体的实现被隐藏在抽象的接口之下,你在使用抽象,并不知道具体的实现是什么,貌似是废话,这不是oo的特性么!举个例子来说吧,datasource肯定用过吧,datasource的getconnection方法本来是新建立一条connection(一般的数据库厂商的driver都是如此实现,当然,如果要你来实现这个driver,你甚至可以直接在driver里加入pool的特性),可是,当你使用pool的话,例如common pool,尽管貌似你也是使用datasource的getconnection来获得连接,但是此datasource却实际上是common pool的一个扩展实现,实际上是从pool中获得连接而不是新建立连接了,同理,后者得到的connection的close方法也未必是真正去断开...
总之,暴露给你的是“抽象”,实际使用的是“具体”,这其实是面向接口编程的基础特性