首页 新闻 会员 周边

抽象类“创建对象”?

0
悬赏园豆:200 [已解决问题] 解决于 2016-02-04 12:30

Array类是抽象类,为什么可以通过静态方法CreateInstance创建对象?还有WebRequest也是抽象类,也能通过Create()获取一个WebRequest对象!为什么可以这样做?如何实现呢?请大神赐教!!

蔡先森的主页 蔡先森 | 初学一级 | 园豆:181
提问于:2016-02-03 19:30
< >
分享
最佳答案
1

内部是new的其一个子类,比如WebRequest.Create()的是一个HttpWebRequest对象.

修改:

上面说的有点儿问题,Array.CreateInstance()这个内部是InternalCall(CLR实现,底层可能是c code)的方式实现的,而WebRequest.Create()是根据你传入的uri的scheme创建的,比如http://www.111.com创建的是一个HttpWebRequest,而ftp://192.168.1.88创建的是一个FtpWebRequest对象

收获园豆:200
jello chen | 大侠五级 |园豆:7336 | 2016-02-03 21:51

谢谢,我懂了

蔡先森 | 园豆:181 (初学一级) | 2016-02-04 12:29
其他回答(4)
0

你应该看看抽象类的应用去W3C看看吧

搁忆 | 园豆:612 (小虾三级) | 2016-02-04 09:07
0

抽象类是不能被实例化的吧!抽象类中有抽象方法,而抽象方法没有方法体,怎么能被实例化?

飞翔の金雕 | 园豆:364 (菜鸟二级) | 2016-02-04 09:23
0

你创建出来的都是这些对象的派生类。你无法创建一个抽象的实例的,你可以试下直接通过Activator.CreateInstance试下创建一个抽象类的实例看报什么错。

Daniel Cai | 园豆:10424 (专家六级) | 2016-02-04 10:11
0

研究研究设计模式嘛!

刘宏玺 | 园豆:14020 (专家六级) | 2016-02-04 11:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册