Java 帮助理解对象的接口声明
有人能给我解释一下这个java代码吗。我觉得很难理解Java 帮助理解对象的接口声明,java,Java,有人能给我解释一下这个java代码吗。我觉得很难理解 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String firstName = request.getParameter("firstName").toString(); processRequest(request, respons
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String firstName = request.getParameter("firstName").toString();
processRequest(request, response);
}
所以请求是接口类HttpServletRequest的一个对象,它得到了一些空方法
所以HttpServletRequest是一个接口。接口为要实现的实际类声明方法。在这种情况下,servlet容器将为您提供实现(取决于您使用的是什么:Tomcat、Jetty等)。记住,接口也可以相互扩展。在这种情况下,HttpServletRequest扩展了ServletRequest。您应该查看更多的方法 需要明确的是,HttpSerlvetRequest的方法并不是“空的”。已经由容器实现,因此当容器调用上面的方法时,它传递给您的对象是实现HttpServletRequest接口的成熟对象。这就是为什么你可以将它们铸造成这样
Edit:toString()方法来自。这是所有java对象的基类 所以HttpServletRequest是一个接口。接口为要实现的实际类声明方法。在这种情况下,servlet容器将为您提供实现(取决于您使用的是什么:Tomcat、Jetty等)。记住,接口也可以相互扩展。在这种情况下,HttpServletRequest扩展了ServletRequest。您应该查看更多的方法 需要明确的是,HttpSerlvetRequest的方法并不是“空的”。已经由容器实现,因此当容器调用上面的方法时,它传递给您的对象是实现HttpServletRequest接口的成熟对象。这就是为什么你可以将它们铸造成这样 Edit:toString()方法来自。这是所有java对象的基类 1)
HttpServletRequest
继承自接口ServletRequest
,该接口包含getParameter()
方法
2) 当Java方法将接口列为参数类型时,实现该接口的对象必须作为参数传入。该对象将具有实现getParameter()
的代码,而不是您在接口中看到的“empty方法”。(例如,一个这样的对象是HttpServletRequestWrapper
)
所有这些信息都可以在JavaDocs中找到,例如:
HttpServletRequest
继承接口ServletRequest
,该接口包含getParameter()
方法
2) 当Java方法将接口列为参数类型时,实现该接口的对象必须作为参数传入。该对象将具有实现getParameter()
的代码,而不是您在接口中看到的“empty方法”。(例如,一个这样的对象是HttpServletRequestWrapper
)
所有这些信息都可以在JavaDocs中找到,例如:
interface Dog {
public String bark();
}
对于实现该接口的任何给定类,它都必须提供自己版本的bark()。每个类都以最有意义的方式实现该方法
class GoldenRetriever implements Dog {
public String bark() {
return "Woof!";
}
}
class YippyDog implements Dog {
public String bark() {
return "yip";
}
}
编辑评论:
当实际使用bark()命令时,您将编写一个方法,该方法接受实现Dog接口的任何类作为输入:
public dodog(Dog mydog) {
System.out.println(mydog.bark());
}
然后,您可以通过创建实现Dog接口的任何类型的对象来使用该方法
public void usedog() {
GoldenRetriever golden = new GoldenRetriever();
dodog(golden);
YippyDog yippy = new YippyDog();
dodog(yippy);
}
dodog方法接受这两种方法,因为它们都是实现Dog接口的类的实例。然后它可以调用bark()方法,因为它知道它们实现了它。。。因为它们实现了Dog接口
我希望这更清楚。该方法不接受接口类型为“HttpServletRequest”的对象。相反,它接受实现该接口的任何对象。类实现接口的方式是为接口表示可用的方法提供实现(即代码) 例如,假设我们有一个狗的接口
interface Dog {
public String bark();
}
对于实现该接口的任何给定类,它都必须提供自己版本的bark()。每个类都以最有意义的方式实现该方法
class GoldenRetriever implements Dog {
public String bark() {
return "Woof!";
}
}
class YippyDog implements Dog {
public String bark() {
return "yip";
}
}
编辑评论:
当实际使用bark()命令时,您将编写一个方法,该方法接受实现Dog接口的任何类作为输入:
public dodog(Dog mydog) {
System.out.println(mydog.bark());
}
然后,您可以通过创建实现Dog接口的任何类型的对象来使用该方法
public void usedog() {
GoldenRetriever golden = new GoldenRetriever();
dodog(golden);
YippyDog yippy = new YippyDog();
dodog(yippy);
}
dodog方法接受这两种方法,因为它们都是实现Dog接口的类的实例。然后它可以调用bark()方法,因为它知道它们实现了它。。。因为它们实现了Dog接口
我希望这更清楚。@noname,@darren很好地回答了你的问题,但你向他提出的问题表明,你需要解释更多的基本问题。所以
request
是实现HttpServletRequest
的类的对象。当我们看向天空时,我们看到:
说一个类实现了一个接口,或者说一个接口扩展了另一个接口,可以用更人性化的术语表示为