继承 HttpURLConnection 的自定义子类转换

首先申明 自己现在还没有搞懂,不过感觉与下面转载处有些相通的地方,可以借鉴下吧.....搞懂的告诉我哦...

自己想搞清楚出的

java Api 中(HttpURLConnection 是继承urlConnection的

创建个类是 public class AAA extends java.net.HttpURLConnection ....

java.net.URL url=new URL("http://XXXXXXXXX");

AAA a=(ReqeustUrl)url.openConnection();


居然报错 java.lang.ClassCastException:sun.net.www.protocol.http.HttpURLConnection cannot be cast to AAA

打印输出 System.out.println(url.openConnection().getClass().getName()); 结果为 sun.net.www.protocol.http.HttpURLConnection

怎么回事?

-------------------------------------转载处------------------------------------------

对于抽象类的一点疑问

1.在李刚著的《疯狂java讲义》第二版中,第6章抽象类的那一节,对于抽象类,有这样一句话:抽象类不能用来创建实例,只能当成父类来被继承。
2.java API7.0中,HttpURLConnection是个抽象类。
Class HttpURLConnection

java.lang.Object
java.net.URLConnection
java.net.HttpURLConnection



Direct Known Subclasses: HttpsURLConnection
--------------------------------------------------------------------------------

public abstract class [color=#FF0000]HttpURLConnection[/color]
extends URLConnection
3. URL resource=new URL("http://www.crazyit.org/index.php");
URLConnection wResp=resource.openConnection();中wResp是HttpURLConnection
通过反射机制可以看到: System.out.println(wResp.getClass().getName());
输出结果如下:sun.net.www.protocol.http.HttpURLConnection
所以可以知道,在运行的过程中,wRsp是HttpURLConnection的实例。
4.疑问:根据上面三点,现象是:第一点上描述的内容和第三点实验内容不符。
这到底是怎么回事?是我的实验方法不对呢?还是对某方面知识的理解不到位?

------解决方案--------------------------------------------------------
不冲突

1.sun.net.www.protocol.http.HttpURLConnection 继承了 java.net.HttpURLConnection
2.url.openConnection()实际上返回的是一个sun.net.www.protocol.http.HttpURLConnection的实例
3.因为继承的关系,子类的引用可以被赋值给一个声明为其父类的一个变量.

关于第三点,java里任意一个类,都是继承自Object.你可以把其它类的引用赋值给Object变量。

比如 Object obj="字符串";



来自http://www.myexception.cn/j2se/396777.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值