A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© HM李超 高级黑马   /  2013-10-18 22:25  /  1716 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 HM李超 于 2013-10-22 22:44 编辑

       java的net包下有个URLConnection,原型是 public abstract class URLConnection ,已知URLConnection是抽象类,不能被实例化,但是通过URL类的
OpenConnection方法可以返回URLConnection的对象,这个是为什么?怎么实现?不是说抽象类不能被实例化吗?
      这是JDK1.6提供的关于这个方法的源码:
    public URLConnection openConnection() throws java.io.IOException {
    return handler.openConnection(this);
    }
没看懂,这个handler是什么意思?这个方法应该还调了一次  URLConnection openConnection(Proxy proxy)
更不懂了,有木有明白的哥们解释一下?

评分

参与人数 1技术分 +1 收起 理由
李江 + 1 勤学爱问,好榜样

查看全部评分

5 个回复

倒序浏览
本帖最后由 周学彬 于 2013-10-19 14:10 编辑

抽象类不可以实例化是指不可以通过new的方式直接用该类创建一个对象
但是抽象类如果有非抽象子类,那么根据多态性,可以由子类创建一个父类对象,这就可以实例化了
URLConnection有两个子类均可以实例化,所以此处获得该类的对象,是可以的。
楼主既然看到了handler是一个类的对象,为什么不看看它是哪个类创建的呢?它应该是URL类创建的一个对象
至于proxy,API里面写的很清楚啊,它说明该连接要通过指定的代理来建立,proxy是一个Proxy类实例对象

评分

参与人数 1技术分 +1 收起 理由
周志龙 + 1 赞一个!

查看全部评分

回复 使用道具 举报

如果楼主已经解惑,请将帖子改为提问结束
回复 使用道具 举报
周学彬 发表于 2013-10-19 13:49
抽象类不可以实例化是指不可以通过new的方式直接用该类创建一个对象
但是抽象类如果有非抽象子类,那么根据 ...

更不解了,多态不是父类引用指向子类对象么?创建的是子类对象,没有父类对象啊。我观察URLConnection的两个子类,都没有相关的方法返回的是URLConnection的对象。按你所说的,B extends A;A a= new B();
这里是多态,但是父类A的对象呢?明显只有B的对象嘛,a只是引用。怎么破?
回复 使用道具 举报
To 金牌黑马 2013-10-20 19:11:18
报纸
楼主你好,如果问题已解决请将帖子状态修改为提问结束,如果未解决请继续提问,谢谢合作
如果不会修改请看解释帖:http://bbs.itheima.com/thread-89313-1-1.html
回复 使用道具 举报
仇邓强 发表于 2013-10-20 19:11
楼主你好,如果问题已解决请将帖子状态修改为提问结束,如果未解决请继续提问,谢谢合作
如果不会修改请看 ...

版主别急,这个问题,我还没有得到同志们满意的回复,改帖子我会的,推迟一小段时间,不好意思啊
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马