我有以下课程
public class RegisterUserDetails extends DatabaseCall {
public String setAddUserQuery(User user){
//code
return query;
}
}
这是DatabaseCall类
public class DatabaseCall {
public ResultSet executeQuery(String query){
//code
return rs;
}
}
我试图通过这样做来编程到超类型/接口
DatabaseCall dbCall = new RegisterUserDetails();
但是我无法以这种方式查看setAddUserQuery方法。为什么是这样? 对接口的编程似乎只适用于抽象类和接口?
答案 0 :(得分:0)
但是我无法以这种方式查看setAddUserQuery方法。这是为什么?
因为DatabaseCall
没有setAdduserQuery
。您对该对象的接口没有该方法。
对接口的编程似乎只适用于抽象类和接口?
不,它完全不受此限制。但是您拥有的接口(由接口或类定义)必须具有您需要的功能。在您的情况下,DatabaseCall
没有您需要的功能(setAddUserQuery
)。
可能应该将其添加到DatabaseCall
,或者需要将需要使用setAddUserQuery
的特定代码写入功能更丰富的界面(包含{{1}的界面也许setAddUserQuery
)。
但是编程到接口的目标是编程所需的功能,而不是具体的类型。界面(所需功能)仍然必须具备您需要的所有功能。例如,您编程为RegisterUserDetails
而不是List
,因为ArrayList
具有您需要的所有功能,因此无需使用具体类型,稍后您可能会发现它很有用改为使用List
。