首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

继承转为接口的有关问题

2012-08-31 
继承转为接口的问题Class Main.javapackage Systemimport javax.servlet.http.HttpServletpublic class

继承转为接口的问题
Class Main.java

package 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.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="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的),在网上看了一些例子,也不是很明白,有没有人帮忙把上面的类改成接口调用,我参考一下,,不甚感谢.....


[解决办法]
貌似你的代码没有必要用接口吧。。。
[解决办法]
继承和接口的时候都是根据实际业务需求而定的,哪还有强迫用接口不用继承的。有时候继承比接口更合适!它们有各自适合的场景的。你这个明显更适合用继承么。因为接口里不能有实现代码的,接口只负责定义行为,具体实现要实现类去做的,而你这里的实现都是公用的代码,显然是放在父类里更合适。

如果非得用接口,就只能这么改了
Main.java不变,增加接口MainInterface.java
public interface MainInterface {
public Main main = new Main();
}

实现类:

Java code
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 />";    }}
[解决办法]
接口就是要求那些实现接口的程序做什么事情
比如你们头儿让你把继承改接口,怎么改是你的事情,但接口要求他跟你说了你就得按这个做

话说你们头儿没学过java吧....接口和继承并不是可以完全互相替代的东西
[解决办法]
public class somclass implements main{}
我觉得你们老大是这个意思,implements和extends没什么区别,implements只是java为了解决多继承想出来的招

热点排行