黑马程序员技术交流社区

标题: 关于网络编程的URLConnection类的小问题 [打印本页]

作者: HM李超    时间: 2013-10-18 22:25
标题: 关于网络编程的URLConnection类的小问题
本帖最后由 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)
更不懂了,有木有明白的哥们解释一下?

作者: 周学彬    时间: 2013-10-19 13:49
本帖最后由 周学彬 于 2013-10-19 14:10 编辑

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

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

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

版主别急,这个问题,我还没有得到同志们满意的回复,改帖子我会的,推迟一小段时间,不好意思啊




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2