教学大纲 :面相对象 抽象 接口

拟墨画扇 提交于 2020-08-08 19:50:16

Java面向对象编程有三大特性,它们是封装、继承和多态。

封装: 封装将复杂的功能封装起来,对外开放一个接口,简单调用即可

继承:  让类与类之间产生关系,为多态打下基础

多态:  子类对象可以赋值给父类变量,但运行是仍表现出子类的行为特征

抽象和接口

从定义上来讲:

定义 abstruct class className interface className
构造方法
成员变量
静态成员变量 有( 默认即为public static final类型 )
方法是否必须为抽象 是( 默认即为public abstract类型 )
静态方法

 

从使用上来讲:

继承抽象(单)   实现接口(多)

接口一般用于系统架构设计,定义系统通信之间的契约

抽象则是在代码重用方面发挥作用,如

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public abstract class BaseServlet extends HttpServlet {


    // 重用
    public final void service(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        //记录访问日志
        // 进行权限判断
        if (具有权限) {
            try {
                doService(request, response);
            } catch (Exception e) {
                记录异常信息
            }
        }
    }

    // 定义为抽象,子类去实现。
    // 注意访问权限定义成protected,显得既专业,又严谨,因为它是专门给子类用的
    protected abstract void doService(HttpServletRequest request,HttpServletResponse response) throws IOException, ServletException;
}



/*
* 子类只关心自己的业务逻辑, 实现父类的抽象方法(必须实现,否则报错)
*/
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class MyServlet1 extends BaseServlet {
    protected void doService(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
        本Servlet只处理的具体业务逻辑代码
    }
}

再比如实现一个缓存 cache, 不管是文件缓存,数据库缓存,Redis缓存。都会涉及到存入和取出。

那么就可以定义一种规范

/*
* 大家按照规范来,结构一目了然,避免了混乱无序
*/ 
interface Cache {
   public void set();
   public void get();
}




class Redis implements Cache{
   //set
   //get
}

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!