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
B
A.Fun()而不是
A
B
B.Fun()
new关键字是隐藏继承的成员,这里是什么原因呢
我把new改成override就输出B.Fun()
到底是什么原因,请给我详细分析
{
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
B
A.Fun()而不是
A
B
B.Fun()
new关键字是隐藏继承的成员,这里是什么原因呢
我把new改成override就输出B.Fun()
到底是什么原因,请给我详细分析
解决方案 »
- C#调用存储过程关闭数据库服务
- 请教一下.net下开发activeX控件的签名的问题
- C#2005 TreeView的一些问题
- 求思路与代码、
- C#从文件中读取一个整数
- 如果通过C#添加注册表REG_MULTI_SZ类型的值
- 关于有效性验证的问题
- 本人一直以为.net只提供面向web应用的跨平台能力,而对于..................
- qqchen79(知秋一叶) 请进...
- 拜托!各位闪客高人,请帮帮忙!
- 错误 1 命名空间“System.Data”中不存在类型或命名空间名称“SqlClint”(是缺少程序集引用吗?) 请教
- 如何把多个控件放在一个控件里面,只要控制一个控件就可以控制多个控件!
==
这有什么好说,人家就是这样规定的我把new改成override就输出B.Fun()
==
这个实现了多态,所以当父类的引用指向子类的成员时会调用子类重写的方法