抽象类的作用

抽象类


1.什么是抽象类

— > 类和类本身具有共同特征,将这些特征提取出来,形成的就叫做抽象类。抽象类本身并不存在,所以无法创建对象

2.抽象类的作用

–>不往抽象了说,最直观的就是实现接口中的方法,供子类继承和重写
我们拿“Servlet”接口进行举例

  1. Servlet接口中有五个抽象方法,大家都知道一个非抽象的类要实现接口,需要把接口中的方法都加以实现,那如果我只想用其中一个方法而又不想重写其它方法该怎么办呢 ?
    ----》这个时候我们就需要抽象类了,抽象类可以重写接口中的方法,并添加自己的方法。这样子类在重写时,可以直接继承抽象类,而不用直接实现接口

OneServlet实现类

1.问题:为什么OneServlet不直接实现Servlet接口,而要继承HttpServlet抽象类?
-----》 继承HttpServlet接口可以有选择的重写我们需要的方法,降低程序的开发难度。

public class OneServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("OneServlet类针对浏览器发送GET请求方式处理");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("OneServlet类针对浏览器发送POST请求方式处理");
    }

}

Servlet接口


public interface Servlet {
    void init(ServletConfig var1) throws ServletException;

    ServletConfig getServletConfig();

    void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;

    String getServletInfo();

    void destroy();
}

抽象类GenericServlet 对应实现接口Servlet

public abstract class GenericServlet implements Servlet, ServletConfig, Serializable {
	
	public void destroy() {}

	public void init(ServletConfig config) throws ServletException {
	     this.config = config;
	     this.init();
	 }
	public abstract void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;

	public String getServletInfo() {
	        return "";
	}

	public ServletConfig getServletConfig() {
	        return this.config;
	}
}    

抽象类HttpServlet父类对应抽象类GenericServlet

public abstract class HttpServlet extends GenericServlet {

 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String protocol = req.getProtocol();
        String msg = lStrings.getString("http.method_get_not_supported");
        if (protocol.endsWith("1.1")) {
            resp.sendError(405, msg);
        } else {
            resp.sendError(400, msg);
        }

    }
     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        String protocol = req.getProtocol();
        String msg = lStrings.getString("http.method_post_not_supported");
        if (protocol.endsWith("1.1")) {
            resp.sendError(405, msg);
        } else {
            resp.sendError(400, msg);
        }

    }
}    
  • 10
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值