可以这样理解,按照Java API文档的说法,接口有类实现、对象实现的区别。类实现,例如Runnable,是一个类通过implements引用Runnable接口实现的。此时,比如(Thread)t = new Thread(this),按字面义API文档上说明this应该是Runnable接口,但实际上应当理解为this是这个实现了Runnable接口的类,一个实现了run()方法的类。
如果上面的逻辑通顺,那么对应的,接口的对象实现,比如Enumeration e = (Vector)v.elements(),e是一个引用了Enumeration接口的对象,而不应该是Enumeration这个接口产生的对象。
PS:以上也是些个人理解,因为这也是我思考过一段时间的问题。。。抛砖引玉嘛,期待能有更权威的解释-_-
简单来说是~多态~