这是msdn上的例子,可是本人有一个疑问,抽象类不能被实例化,那newImage算什么呢?为什么还能这样用?Image.FromFile()方法的返回值也是Image类型,一个抽象类能作为返回值类型吗?
解决方案
20
20
一个对象可以有许多种类型,声明变量时只要是兼容于对象实例的类型,都是可以通过编译的。所以声明变量的类型可以不是实例化时的类型。
但是,一般来说,编程时都会声明为变量为一个尽可能具体的、准确的类型,而不是对象的多种类型中抽象的那个。
Image.FromFile(…) 即可能返回 Bitmap,也可能返回 Metafile,是两种完全不一样的对象。但是这两中对象都是 Image,所以声明变量为 Image 类型。
但是,一般来说,编程时都会声明为变量为一个尽可能具体的、准确的类型,而不是对象的多种类型中抽象的那个。
Image.FromFile(…) 即可能返回 Bitmap,也可能返回 Metafile,是两种完全不一样的对象。但是这两中对象都是 Image,所以声明变量为 Image 类型。