【发布时间】:2014-11-14 02:01:05
【问题描述】:
你好,我写了两个简单的类
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Kus
{
class Program : Class1
{
public Program()
{}
public override void findtheflyingdistance(out int x)
{ x=0;
Random r = new Random();
for (int i = 0; i < 100; i++)
{
int z = r.Next(100, 500);
x += x + z;
}
Console.WriteLine("Kuş" + x);
}
static void Main(string[] args)
{
int x;
Program pg = new Program();
pg.findtheflyingdistance(out x);
Class1 C1 = pg;
C1.findtheflyingdistance(out x);
}
}
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Kus
{
class Class1
{
public Class1(){}
public virtual void findtheflyingdistance(out int x)
{ x=0;
int z=200;
x += x + z;
Console.WriteLine("Leylek" +x);
}
}
}
据我了解,覆盖方法会覆盖虚拟方法。当我在主程序类中创建两个实例时。程序类中的 findtheflyingdistance(out int x) 适用于两个实例,但是当我在两个类中使用虚拟方法 findtheflyingdistance(out int x) 时。每个实例都使用自己的类。所以我不明白幕后的逻辑。我们为什么要写虚方法?如果我们想覆盖一个方法,我们可以覆盖已经被覆盖的非虚拟方法。
【问题讨论】:
-
"we can do override and non-virtual method that will be overriden already"- 你可以吗?不是根据 MSDN:“默认情况下,方法是非虚拟的。您不能覆盖非虚拟方法。” (msdn.microsoft.com/en-us/library/9fkccyh4.aspx) -
如果一些评论帮助你理解它并且你完成了这个问题接受它!
标签: c# class overriding virtual