网址:链接(1)
根据这篇文章..。您不能实现抽象类,而只能从它们派生。这是有道理的,我已经读了很多次了。
像接口一样,不能实现抽象类的实例,但是可以在抽象类中实现可由子类使用的方法、字段和属性。
但在MSDN上
网址:MSDN上的TextWriter CLass
TextWriter是一个抽象类,但它定义了两个构造函数.根据MS 70-536的书,以下声明是有效的:
TextWriter tw = new File.CreateText("myFile.Txt")静态文件类和它的CreateText方法对我来说很好,因为我在MSDN上研究过它,但是有人能解释一下我发现的这个小矛盾吗?我肯定不是第一个?
为什么基类抽象类的实例化是可能的?
发布于 2010-05-15 17:12:51
所有抽象类至少有一个构造函数--要么实现一个,要么编译器生成一个无参数的默认构造函数。构造函数是在实例化派生类时执行的--基类是抽象的并不重要。
但是不能实例化抽象类-- File.CreateText()是一个静态方法,并返回从TextWriter派生的类的实例,而不是TextWriter实例。
发布于 2010-05-15 17:08:17
File.CreateText不返回TextWriter,而是返回StreamWriter,后者是TextWriter。
发布于 2010-05-15 17:12:22
您可以在这里实例化似乎是抽象类的类,其原因与您可以实例化似乎是接口的类的原因相同:您实际上不是创建该类型的类,而是创建一个可以转换为该类型的类。tw可以定义为TextWriter,尽管它实际上不能是TextWriter。
但是,我对这个新关键字表示怀疑。你确定那有效吗?File.CreateText创建并返回一个TextWriter,但是new表示一个构造函数,而构造函数不是正在发生的。
https://stackoverflow.com/questions/2840962
复制相似问题