为什么Image抽象类可以实例化?

swdmike 2009-06-16 07:43:04
如:Image i = Image.FromFile(@"d:\pic.png");
Image.FromFile返回的是Image
...全文
104 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
TriSinker 2009-06-17
  • 打赏
  • 举报
回复
ding
zhangzheng1107 2009-06-17
  • 打赏
  • 举报
回复
Image.FromFile方法中返回的是Image的子类 等号左边是基类,等号右边返回的其实是子类
dancingbit 2009-06-17
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 swdmike 的回复:]
引用 4 楼 ChrisAK 的回复:
纠正:
"然后用一个静态方法创建一个真正的类b转成a给你用. "

应该是
然后用一个静态方法创建一个真正可实例化的类b的实例转成a给你用.


就比如创建的其实是Bitmap,然后转成他的基类Image,再返回给你?
[/Quote]
不错。
swdmike 2009-06-17
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ChrisAK 的回复:]
纠正:
"然后用一个静态方法创建一个真正的类b转成a给你用. "

应该是
然后用一个静态方法创建一个真正可实例化的类b的实例转成a给你用.
[/Quote]
就比如创建的其实是Bitmap,然后转成他的基类Image,再返回给你?
ChrisAK 2009-06-16
  • 打赏
  • 举报
回复
纠正:
"然后用一个静态方法创建一个真正的类b转成a给你用. "

应该是
然后用一个静态方法创建一个真正可实例化的类b的实例转成a给你用.
xxlxmd 2009-06-16
  • 打赏
  • 举报
回复
貌似 没NEW 么。。。怎么实例化了。。 I 对象被赋值。。。
ChrisAK 2009-06-16
  • 打赏
  • 举报
回复
这是一种设计的方式.
只提供一个抽象的类a给你调用,
然后用一个静态方法创建一个真正的类b转成a给你用.
当然b是不公开且继承自a的.
这样你的程序就和b解耦了.

不管什么它的b以后怎么变甚至干脆删掉原有的b重写个新类c.
你的前台代码都不用变.
xminsong 2009-06-16
  • 打赏
  • 举报
回复
没有建立啊?
Image.FromFile是一个静态方法,
返回的应该不是实例地址。
你试试,应该不能调用其实例方法,
本人基础差,有些我所理解的不敢写,怕误导你,
等高人吧!

110,533

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧