继承 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值