先举个小例子:
    String path="/servlet/ServletB";
    RequestDispatcher rd = request.getRequestDispatcher(path);
    rd.forward(request,response);在先前学SE的时候,我记得是:接口不能生成对象的,而且是必须是实现它的方法。我纳闷的是:RequestDispatcher 就是一个接口,它里面的方法是void类型的,不是抽象的,为什么能生成对象,并且去调用它的方法呢。大家帮我解释一下…………谢了~ ~ ~

解决方案 »

  1.   

    rd不是RequestDispatcher的对象,使用new的才是对象。
      

  2.   

    request.getRequestDispatcher(path);
    这里返回一个实现了RequestDispatcher接口的类
    其实就相当于,父类引用指向子类对象
    所以rd就是一个实现了RequestDispatcher接口的类,就能调用咯
      

  3.   

    多态啊多态,这么基本的东西都不清楚搞什么struts?
      

  4.   

    接口不是不能生成对象,是不能通过new来生成对象。如果连接口声明都不行,那面向接口编程就全白扯了
      

  5.   

    rd不是RequestDispatcher的实例,而是它的实现类的实例,此例中就是request.getRequestDispatcher(path)返回的这个对象,这个对象肯定实现了RequestDispatcher接口
      

  6.   

    9楼说的有理 。。 getRequestDispatcher(path) 是方法 request 对象的方法 
    该方法的返回值 是一个 实现 RequestDispatcher 接口 的类的对象 
      

  7.   

    多态 好好看看核心技术 或 java编程思想 认真领会 莫怀疑 只是你还没理解 我看好你哦 很有上进心