深入理解Java多态机制
来源:互联网 发布:linux文件权限 编辑:程序博客网 时间:2024/05/18 01:10
目录:
1,多态的概念?
2,存在的条件?
3,案列解析?
4,应用场景?1,多态的概念
父类引用指向子类对象,通俗点就是,在编译时不绑定是什么方法,根据你传进来的值,是什么就会运行什么。
2.存在条件
第一,要有继承
第二,要有方法的重写
第三,父类引用指向子类对象3,案列解析
好好体会以下这个案例,通过debug,就知道他的运行流程,最后看看输出的结果是什么玩意儿,其实这是一道阿里实习生的一道笔试题。
代码:
public class Demo { class Super { int flag = 1; Super() { test(); } void test() { System.out.println("Super.test() flag=" + flag); } } class Sub extends Super { Sub(int i) { super();//默认的 flag = i;//flag = 5 System.out.println("Sub.Sub()flag=" + flag); } void test() { System.out.println("Sub.test()flag=" + flag); } } public static void main(String[] args) { new Demo().new Sub(5); }}附:最后给出输出结果Sub.test()flag=1Sub.Sub()flag=5
4 ,应用场景?此处挑选一个典型的案列,j2ee servlet中的应用。
/** * 采用反射+多态实现一个通用的servlet,根据用户请求的方法完成相应方法的调用 */public class BaseServlet extends HttpServlet { @Override public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { try { // 1.获取子类 创建子类或者调用子类的时候 this代表的是子类对象 @SuppressWarnings("rawtypes") Class clazz = this.getClass(); //System.out.println(this);此处通过控制台打印,this所指的对象乃子类的对象,通俗点就是谁调用指向谁。 // 2.获取请求的方法 String m = request.getParameter("method"); if(m==null){ m="index"; } //System.out.println(m); // 3.获取方法对象 Method method = clazz.getMethod(m, HttpServletRequest.class, HttpServletResponse.class); // 4.让方法执行 返回值为请求转发的路径 String s=(String) method.invoke(this, request,response);//相当于 userservlet.add(request,response) // 5.判断s是否为空 if(s!=null){ request.getRequestDispatcher(s).forward(request, response); } } catch (Exception e) { e.printStackTrace(); throw new RuntimeException(); } } public String index(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { return null; }}
下面是他的一个子类,通过继承当前servlet
public class IndexServlet extends BaseServlet { private static final long serialVersionUID = 1L; public String index(HttpServletRequest request, HttpServletResponse reponse)throws ServletException, IOException { //System.out.println("SndexServlet 的index方法执行了"); return "jsp/index.jsp"; }}
阅读全文
1 0
- 深入理解Java多态机制
- 深入理解Java Proxy机制
- 深入理解JAVA事件机制
- 深入理解JAVA事件机制
- 深入理解JAVA事件机制
- 深入理解Java Proxy机制
- 深入理解Java Proxy机制
- 深入理解Java Proxy机制
- 深入理解Java Proxy机制
- 深入理解Java Proxy机制
- 深入理解Java Proxy机制
- 深入理解Java Proxy机制
- 深入理解Java Proxy机制
- 深入理解Java Proxy机制
- 深入理解Java Proxy机制
- 【java】深入理解 Proxy机制
- 深入理解Java Proxy机制
- 深入理解Java Proxy机制
- NGUI HUD text 代码示例
- 实用类(和电脑玩猜拳游戏)
- linux目录结构
- Gym 101158C Distribution Center(思路题)
- 分布式环境下限流方案的实现redis RateLimiter Guava,Token Bucket, Leaky Bucket
- 深入理解Java多态机制
- Android内存优化
- MySQL InnoDB存储结构
- 凸包(判多边形的凹凸性)
- 【知了堂学习笔记】Java中static关键字的一些简单使用方法
- Java操作Json
- iOS 后台返回json解析出现的null的解决办法
- Android轻量级框架XSnow
- shell基础:脚本执行方式