标题:[求助]virtual和没virtual的区别啊!
只看楼主
stcrs
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2006-6-29
 问题点数:0 回复次数:7 
[求助]virtual和没virtual的区别啊!
请问virtual和没virtual有什么区别啊?
在函数前面加了virtual和没virtual有什么区别啊?
如果在另一个类中直接覆盖父类的函数,父类函数前不加virtual且子类函数前也不加override,和父类函数前加virtual且子类函数前加override两者有什么区别啊?能否说详细点啊?
先谢谢啦!!!
搜索更多相关主题的帖子: virtual 函数 子类 父类 override 
2006-10-09 23:36
Theron
Rank: 1
等 级:新手上路
帖 子:127
专家分:0
注 册:2006-9-23
得分:0 

namespace Oct_7_ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
MyClassBase c = new MyClass2();//定义一个 MyClassBase实例, 但调用的却是 MyClass2构造方法
c.F();
c.G();
}
}

class MyClassBase
{
public virtual void F()//虚方法
{
Console.WriteLine("F of Base");
}

public void G()
{
Console.WriteLine("G of Base");
}
}

class MyClass2 : MyClassBase
{
public override void F()//虚方法重写
{
Console.WriteLine("F or MyClass2");
}

public void G()//与基类方法同名, 编译警告!
{
Console.WriteLine("G of MyClass2");
}
}
}





你试一下运行的结果是什么, 就会知道是什么区别了.


2006-10-10 08:38
Theron
Rank: 1
等 级:新手上路
帖 子:127
专家分:0
注 册:2006-9-23
得分:0 

class MyClass2 : MyClassBase
{
public override void F()//虚方法重写
{
Console.WriteLine("F or MyClass2");
}

public void G()//与基类方法同名, 编译警告!改为 public new void G()则不警告
//因为你明显告诉编译器你是有意隐藏同名函数
{
Console.WriteLine("G of MyClass2");
}
}

[此贴子已经被作者于2006-10-10 8:41:36编辑过]


2006-10-10 08:41
stcrs
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2006-6-29
得分:0 

还是不懂啊,大哥,能否说明白点,这样看还是看不懂啊!!!!

2006-10-10 22:48
stcrs
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2006-6-29
得分:0 
VIRTUAL的作用是什么???用了这个有什么作用,能否说清楚点,很难懂啊!!
2006-10-10 22:50
stcrs
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2006-6-29
得分:0 

我还想问问:父类函数前加virtual且子类函数前加new和无加new两者有什么区别啊?

2006-10-10 23:36
小鸟上路
Rank: 1
等 级:新手上路
帖 子:18
专家分:0
注 册:2006-9-8
得分:0 
《C#入门经典》第10章,里面讲得好清楚,

一边上班一边学习,好辛苦啊~~~~
2006-10-11 00:00
stcrs
Rank: 1
等 级:新手上路
帖 子:30
专家分:0
注 册:2006-6-29
得分:0 
好!!谢谢啦!!!我查到了!!再次感谢
2006-10-11 00:12



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-95141-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.692472 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved