Array类是抽象类,为什么可以通过静态方法CreateInstance创建对象?还有WebRequest也是抽象类,也能通过Create()获取一个WebRequest对象!为什么可以这样做?如何实现呢?请大神赐教!!
内部是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对象
谢谢,我懂了
你应该看看抽象类的应用去W3C看看吧
抽象类是不能被实例化的吧!抽象类中有抽象方法,而抽象方法没有方法体,怎么能被实例化?
你创建出来的都是这些对象的派生类。你无法创建一个抽象的实例的,你可以试下直接通过Activator.CreateInstance试下创建一个抽象类的实例看报什么错。
研究研究设计模式嘛!