zoukankan      html  css  js  c++  java
  • 对接口的思考

    在java servlet编程中,我们经常碰到HttpSession session = request.getSession()这句代码,获取到一个session对象。

    查看HttpSession源码可以发现,这是个接口类public interface HttpSession,这也就是说HttpSession对象是不能直接用new HttpSession ()获取的。

    那么我们再来看getSession()这个方法,查看HttpServletRequest的源码可以发现,这也是个interfacce接口类,也是不能直接创建对象的。

    那么到这我们可以判断,这里充分利用了java中的多态这个特性,我们这里所看到的传入的request对象和session对象并不是由HttpServletRequest和HttpSession 直接new出来的对象,而是继承了他们的子类对象,由于接口的特性(继承了接口的类需要重写接口的所有方法),然后子类返回一个子类的对象(可用父类接口强转),这样我们用接口定义的接收一个对象表面上看起来似乎就是接口对象直接创建的,实际上是它的一个实现类,但是含有所需的方法并且实现由它们,这个就是多态。

    class Demo11_3 {
    	
    	public static void method(DemoA A){
        	  //光从参数上看我们会以为传入的是一个直接的interface对象,实际上传入的是它的子类对象,并且已经实现了方法
      A.printHello(); } public static void main(String[] args) throws IOException { Demo11_3.method(new DemoB()); } } interface DemoA{ public final static String name = "Tom"; public DemoA getDemoA(); public void printHello(); } class DemoB implements DemoA{ @Override public DemoA getDemoA() { // TODO Auto-generated method stub return (DemoA)new DemoB(); } @Override public void printHello() { // TODO Auto-generated method stub System.out.println("Hello"); } }

      

  • 相关阅读:
    关于 NSTimer 和 NSRunLoop 的一些理解
    通过 CocoaPods 集成 WeexSDK 到iOS项目中
    iOS 从相册取出的图片默认 取中间部分 裁剪成方形的
    Trilynn分享了炼数成金邀请码
    highcharts分段显示不同颜色
    H5手机开发锁定表头和首列(惯性滚动)解决方案
    为移动端开发提供纯前端的路由方案
    ionic系列
    2014总结
    margin 相关 bug 系列
  • 原文地址:https://www.cnblogs.com/it-life-nathan/p/7388550.html
Copyright © 2011-2022 走看看