我在java中找到了有关接口的信息,它说我们不能创建它的实例
但我目前正在实现SQLite,我发现:
Cursor res = db.rawQuery("SELECT * FROM " + TABLE_NAME,null); 同时:public interface Cursor extends Closeable
所以我能创建一个接口实例吗?
发布于 2016-09-28 20:20:48
不,您不是通过这样做创建实例的。创建实例需要使用new关键字(或者使用反射,但这超出了问题的范围)。在db.rawQuery内部的某个地方,他们正在创建一个implements游标类的实例。实现接口需要拥有它声明实现的所有方法(go图),这意味着您可以将该对象视为“游标类”的实例,并将其返回给期望Cursor的人。他们从未直接创建过该接口的实例。
发布于 2016-09-28 20:22:17
在允许多态性的语言中,例如Java,在"=“之前看到的左侧类型称为静态类型,右侧称为动态类型。
静态类型允许您指定所使用的对象为游标类型。这将锁定允许您使用它执行的操作。对象的动态类型是实际的类型,必须是实现接口类型的类才能兼容。
https://stackoverflow.com/questions/39756905
复制相似问题