A a = new B(); 理解意义。

levin9 2007-04-17 11:50:52
public abstract class A
{
public A()
{
Console.WriteLine('A');
}
public virtual void Fun()
{
Console.WriteLine("A.Fun()");
}
}
public class B: A
{
public B()
{
Console.WriteLine('B');
}
public new void Fun()
{
Console.WriteLine("B.Fun()");
}
public static void Main()
{
A a = new B();
a.Fun();
}
}
这段程序A a = new B(); 怎么理解呢?
执行顺序是:
先执行基类a的构造涵数,在来执行子类的构造涵数
...全文
293 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
kimiya25 2007-04-18
  • 打赏
  • 举报
回复
多态性. 就好比所有的类派生与object
yixianggao 2007-04-18
  • 打赏
  • 举报
回复
执行结果如下:
A
B
A.Fun()

先A后B,即先父后子。
北京的雾霾天 2007-04-18
  • 打赏
  • 举报
回复
这是纯玩概念了.

这段程序A a = new B(); 怎么理解呢?
---------------
是把B当成A来使用了.这样可能会丢失了B的特有的性质,比如用New声明的成员将不起作用!
weizhuangzhi 2007-04-18
  • 打赏
  • 举报
回复
应该是这句执行吧
Console.WriteLine("B.Fun()");
lnwuyaowei 2007-04-18
  • 打赏
  • 举报
回复
凡是基类可以出现的地方,子类必然可以代替基类出现.
针对抽象编程.....

楼主找本设计模式书看看,就明白为什么有这样的表达了.
windstore 2007-04-17
  • 打赏
  • 举报
回复
A a = new B();

先实例化一个类B的对象,然后隐式类型转换为类A的对象,相当于
B b=new B();
A a=b;

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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