首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

C#中Virtual与override分别有什么用途?该如何处理

2012-01-19 
C#中Virtual与override分别有什么用途?.C#中Virtual与override分别有什么用途?[解决办法]using Systemcla

C#中Virtual与override分别有什么用途?
.C#中Virtual与override分别有什么用途?

[解决办法]
using System;
class A
{
public A()
{
PrintFields();
}

public virtual void PrintFields()
{}
}

class B:A
{
int x=1;
int y;
public B()
{
y=-1;
}

public override void PrintFields()
{
Console.WriteLine( "x={0},y={1} ",x,y);
}
}

当使用new B()创建B的实例时,产生什么输出?

--------------------------------------------
=========================================
x =1 y =0

new B()后首先执行
int x=1;
int y;
再执行B的构造函数时会调用基类构造函数先 于是执行
public A()
{
PrintFields();
}
而A中的PrintFields方法是virtual方法且B中已经用override关键字实现了该方法 于是会执行子类B中的PrintFields方法 Console.WriteLine( "x={0},y={1} ",x,y); //注意此时还没有执行到B的构造函数 所以 y值为0

而后才执行到B的构造函数//此时 x=1 y =-1;
-----------------------------------------------

[解决办法]
virtual修饰的方法为虚方法,暗示其子类最好有自己的实现

override修饰的方法为重写方法,表示覆盖了基类原有方法的实现
[解决办法]
高歌起的好早!

virtual修饰的方法

其子类除了override 还可用new来修饰

热点排行