Java 接口编程是否包括扩展类
我有以下课程Java 接口编程是否包括扩展类,java,design-patterns,Java,Design Patterns,我有以下课程 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; } }
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方法。为什么会这样?
对接口编程似乎只适用于抽象类和接口
但是,我不能以这种方式查看setAddUserQuery方法。为什么会这样
因为DatabaseCall没有setAdduserQuery。对象的接口没有该方法
对接口编程似乎只适用于抽象类和接口
不,完全不限于此。但是由接口或类定义的接口必须具有所需的特性。在您的情况下,DatabaseCall没有您需要的setAddUserQuery功能
可能是您应该将其添加到DatabaseCall,或者需要使用setAddUserQuery的特定代码需要写入功能更丰富的接口,其中包括setAddUserQuery;也许我们需要更多的细节
但是编程到接口的目的是编程到所需的特性,而不是具体的类型。所需的界面功能仍然必须具有所需的所有功能。例如,您编程为List而不是ArrayList,因为List具有您所需的所有功能,因此无需使用具体类型,稍后您可能会发现使用LinkedList很有用。这是切片问题:DatabaseCall API不包括名为setAddUserQuery的方法。只有RegisterUserDetails具有该方法。您可以将该方法移动到超类中,也可以强制转换引用。如果您添加不属于父级契约的公共方法,并要求使用这些方法,则对抽象类和接口的编程将失败。这与孩子的父母碰巧是什么无关。为什么由于DatabaseCall不提供任何名为setAddUserQuery的方法-这是多态性的作用,RegisterUserDetails可以用作DatabaseCall,因为它扩展了DatabaseCall,但在这样做时,它只能执行DatabaseCall definesIs这是一个重复的操作,那里的答案回答了这个问题吗?提示:提出这样一个不清楚的问题并不完全是好的做法。然后走开,让那些试图帮助你的人没有任何反馈。。。这并不能改善情况。我真的很惊讶,我是第一个完成这个请求的人。