Class Main.javapackage System;import javax.servlet.http.HttpServlet;public class Main extends HttpServlet {
   public String rs;
   
   public void A(String Test){
       this.B();
   }
   
   private void B(){
       rs="Test String B<br />";
   }
   
   public void C(){
       rs="Test Sting C<br />";
   }
   
   public void D(){
       rs="Test String D<br />";
   }
   
    @Override
   public String toString(){
       return rs.toString();
   }
}Class index.java
package web;import System.Main;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@WebServlet(name="index", urlPatterns={"/index"})
public class index extends Main {
   
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        this.A("index");
        out.print(this.toString());
        this.C();
        out.print(this.toString());
        try {
        } finally { 
            out.close();
        }
    } 
    
    @Override
    public void C(){
        this.rs="Test String Main.C<br />";
    }    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }     @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }    @Override
    public String getServletInfo() {
        return "Short description";
    }}Class NewServlet.javapackage web;import System.Main;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;@WebServlet(name="NewServlet", urlPatterns={"/NewServlet"})
public class NewServlet extends Main {
   
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
            this.A("aaaaaaa");
            this.D();
            out.print(this.toString());
            this.C();
            out.print(this.toString());
        } finally { 
            out.close();
        }
    } 
    
    @Override
    public void D(){
        this.rs="Test String NewServlet.D<br />";
    }    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }     @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }    @Override
    public String getServletInfo() {
        return "Short description";
    }
}大概的意思就是做一个网站,网站所有页面类都是从Main继承下来的,Main类根据每个页面提交上来的信息,再自动分析内容,比如是连接数据库返回表内容,或者是调用XML返回节点,或者其它,再返回给页面类,但有些页面类会重写掉主类的方法,有些不会重写,用默认的就行,再就是变量从主类传递下来,有些页面也会改写变量,有些不会.我一直是用继承的方式做的,但现在要求改为接口,但我一直没有学过接口的东西(从别的语言转到JAVA的),在网上看了一些例子,也不是很明白,有没有人帮忙把上面的类改成接口调用,我参考一下,,不甚感谢.....

解决方案 »

  1.   

    继承和接口的时候都是根据实际业务需求而定的,哪还有强迫用接口不用继承的。有时候继承比接口更合适!它们有各自适合的场景的。你这个明显更适合用继承么。因为接口里不能有实现代码的,接口只负责定义行为,具体实现要实现类去做的,而你这里的实现都是公用的代码,显然是放在父类里更合适。如果非得用接口,就只能这么改了
    Main.java不变,增加接口MainInterface.java
    public interface MainInterface {
        public Main main = new Main();
    }实现类:public class index implements MainInterface {
       
        protected void processRequest(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
            response.setContentType("text/html;charset=UTF-8");
            PrintWriter out = response.getWriter();
            this.main.A("index");
            out.print(this.main.toString());
            this.C();
            out.print(this.main.toString());
            try {
            } finally { 
                out.close();
            }
        }  
        public void C(){
            this.main.rs="Test String Main.C<br />";
        }
    }
    这样看起来有点不伦不类额。
      

  2.   

    接口就是要求那些实现接口的程序做什么事情
    比如你们头儿让你把继承改接口,怎么改是你的事情,但接口要求他跟你说了你就得按这个做话说你们头儿没学过java吧....接口和继承并不是可以完全互相替代的东西
      

  3.   

    public class somclass implements main{}
    我觉得你们老大是这个意思,implements和extends没什么区别,implements只是java为了解决多继承想出来的招